注意这里使用的时异步启动engine方式具体可以参考启动和停止用于 Python 的 MATLAB 引擎
matlab的代码如下:
function out = cal()
a=0;
b=20.3;
out=[a,b]
end
当engine是全局变量future的result()时:
import matlab
from matlab import engine
future = matlab.engine.start_matlab(background=True) #异步启动matlab获得全局变量future
def cal1():
global future #声明下面的future都是全局变量future
eng = future.result() #获得引擎实例
res = eng.cal() #使用引擎调用matlab函数
print(res[0])
eng.exit() #关闭引擎,此时future也失效。
future = matlab.engine.start_matlab(background=True) #在需要重启引擎的地方,更新全局变量future
eng = future.result() #再次获得引擎实例
res = eng.cal()
print(res)
if __name__ == '__main__':
cal1()
当engine是其他文件中import过来的future的result()时,依然可以生效:
from engine import future
import matlab
from matlab import engine
def cal1():
global future
eng = future.result()
res = eng.cal()
print(res[0])
eng.exit()
future = matlab.engine.start_matlab(background=True)
eng = future.result()
res = eng.cal()
print(res)
if __name__ == '__main__':
cal1()
engine.py:
import matlab
from matlab import engine
future = matlab.engine.start_matlab(background=True)