我想启动一个共享的matlab会话,然后立即使用相同的python 3脚本连接到它。我也想在脚本完成后保持打开我的matlab会话。因为将来我想编写一个类来执行此操作,所以我想将所有库导入标头中。
我现在尝试使用os.system
或subprocess.run
启动Matlab共享会话,然后使用matlab.engine连接到它。如下代码所示,我在这两个代码(import matlab.engine
和os.system
)中的任何一个之前都执行了subprocess.run
,但是我的脚本将永远被卡在/挂在这两行。似乎matlab无法告知我的脚本它已成功打开,因此该脚本一直在等待matlab响应。
# the following code cannot finish running
import os
import matlab.engine
os.system("matlab -r \"matlab.engine.shareEngine\"")
截屏:如果我使用这两个中的任何一个作为previous question建议的答案来启动matlab,则可以毫无问题地启动它。
[我还注意到,如果在启动matlab之后导入matlab.engine(以下示例代码),脚本将完成。但这会使我的课很丑。
# the following code can finish running import os os.system("matlab -r \"matlab.engine.shareEngine\"") import matlab.engine
截屏:我试图通过使用
subprocess.Popen
来绕过此问题。它确实启动了matlab,并尝试使用matlab.engine与其连接而不停止,但是该脚本无法连接到matlab,因为matlab.engine将在matlab完成初始化之前尝试连接。
什么原因导致脚本无法从matlab获得响应的问题?如何在标头中一起导入os / subprocess和matlab.engine?是否需要让脚本停止运行一段时间才能等待matlab完成初始化?
我想启动一个共享的matlab会话,然后立即使用相同的python 3脚本连接到它。我也想在脚本完成后保持打开我的matlab会话。因为将来,我想要...
这里是一个解决方案: