2

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)、すべてが完全に実行され、2 つの変数は matlab ワークスペースに完全に配置されます。ただし、matlab からプログラムで実行すると、最初の eng.workspace に引っかかって続行しません。

出力 (Matlab) : Ctrl-C 終了の Matlab コマンド ウィンドウとワークスペースの結果

どんな助けでも大歓迎です。

編集:声明ではなく質問に変えました

4

0 に答える 0