通过matlab引擎在Python中使用eng.workspace时无限繁忙

时间:2015-12-16 19:55:17

标签: python matlab matlab-engine

我已经通过Python中的matlab.engine分离了写入Matlab工作区的问题。有人可以帮忙吗?

每当我调用eng.workspace时,我'超时',就是Matlab进入无限繁忙状态并无法继续使用Python或Matlab中的脚本,实际上它永远不会离开eng.workspace调用

当我按下ctrl-c时,命令仍然执行并且变量存储在matlab工作区中,但在该行之后没有任何内容被执行。

上下文代码:

    %In Matlab
    %Share the current Matlab Session
    testShared = matlab.engine.isEngineShared;
    if ~testShared
        matlab.engine.shareEngine('MATLABShared001');
    end
    %Call the python script
    disp('Starting call to Python Script')
    cmdString = 'python test.py';
    status = system(cmdString);
    disp('Finished call to Python')

    #In Python     
    import matlab.engine
    names = matlab.engine.find_matlab()
    eng = matlab.engine.connect_matlab(names[0])
    eng.workspace['abcd'] = 10
    eng.workspace['test'] = 'it worked!'   
    #No need to quit as python auto closes at end (and problem is before this)

如果手动运行这个python脚本(pyCharm或cmd \ python),那么一切都运行完美,两个变量完美地位于matlab工作区中。但是,当从matlab以编程方式运行时,它会被第一个eng.workspace捕获并且不会继续。

输出(Matlab): Matlab Command Window and Workspace Results of Ctrl-C Termination

感谢任何帮助。

编辑:把它变成一个问题,而不是一个声明

0 个答案:

没有答案