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 コマンド ウィンドウとワークスペースの結果
どんな助けでも大歓迎です。
編集:声明ではなく質問に変えました