Python不等待MATLAB完成

5 python python-2.7

我通过subprocess模块将一个小的MATLAB脚本与Python连接起来.如下:

cmd='(matlab -nosplash -nodesktop -r "optimizer;quit;")'
p = subprocess.Popen(cmd,stdin=None,stdout=None,shell=True)
#subprocess.Popen.wait(p)
#p.wait()
print "DONE?"
Run Code Online (Sandbox Code Playgroud)

但是即使在MATLAB启动之前,"DONE"也正在打印!我的整个代码都因此而破裂.

我试过了:

  • 使用os.system()调用(这是我开始的地方,但我在SO上读到它已被弃用)
  • 使用p.wait()subprocess.Popen.wait.两者都不起作用.
  • 使用3分钟的手动暂停(最长时间MATLAB平均完成)Super Sloppy.

我错过了什么?

mmg*_*mgp 5

对我来说很好:

import subprocess
retcode = subprocess.call(["matlab", "-nosplash", "-nodesktop", "-r", "quit;"])
print "DONE", retcode
Run Code Online (Sandbox Code Playgroud)

相应地拆分命令参数,仅使用您实际需要的选项(shell=True例如,不需要),使用直接执行您之后(call)的函数,即调用并等待完成.

根据您的安装(请参阅http://www.mathworks.com/help/matlab/ref/matlabwindows.html),Matlab可能会以立即退出的方式启动.要处理它,请在参数列表中添加"-wait".


use*_*840 5

使用"-wait"标志启动Matlab.从文件:

"MATLAB由一个单独的启动程序启动,通常启动MATLAB然后立即退出.使用此选项告诉启动程序在MATLAB终止之前不要退出.当您需要在脚本中处理MATLAB的结果时,此选项很有用.使用此选项调用MATLAB会阻止脚本继续运行,直到生成结果."