MATLAB Answers

Can't both import os.system and matlab.engine at the same time in the header

9 ビュー (過去 30 日間)
tamashika
tamashika 2020 年 6 月 10 日
コメント済み: tamashika 2020 年 6 月 18 日
python 3 script keeps failing to finish if I import os.system or subprocess.run first, then use matlab.engine to connect to matlab. As shown in the code below, my script will be stuck/hanged forever.
# the following code cannot finish running
import os
import matlab.engine
os.system("matlab -r \"matlab.engine.shareEngine\"")
What causes the issue that the script can't finish? How can I import os/subprocess and matlab.engine together in the header?

  0 件のコメント

サインインしてコメントする。

採用された回答

Kojiro Saito
Kojiro Saito 2020 年 6 月 17 日
It's because os.system keeps open until called MATLAB exits. That's why I proposed to open another terminal in my Answer.
I guess subprocess is better than os.system in your case.
import os
from subprocess import Popen
Popen("matlab -r \"matlab.engine.shareEngine\"")
The above Python script opens MATLAB engine as a shared, but Python script it self will be closed. So, you can access this shared session from another Python script.
import matlab.engine
names = matlab.engine.find_matlab()
eng = matlab.engine.connect_matlab(names[0]) #names is tuble, so connect to the first one in this example.
print(eng.sqrt(4.0))

  1 件のコメント

tamashika
tamashika 2020 年 6 月 18 日
Ha I didn't know os.system keeps open until called MATLAB exits. Awesome! Thanks

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by