【Python】重启Matlabengineforpython(matlab engine 异步启动)

注意这里使用的时异步启动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)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值