如何创建python 3 class启动MATLAB并保持运行?
How to create a python 3 class to start MATLAB and keep it running?
我在 windows 10 上使用 matlab 2017b 和 python 3。我想创建一个可以启动 matlab 并保持打开状态的 class。但是,matlab 在我完成 python 脚本后立即关闭。这是代码:
import matlab.engine
class Test:
def __init__(self):
self.eng = matlab.engine.start_matlab("-desktop")
if __name__ == "__main__":
Test()
我可以使用 "start_matlab" 命令在 python 控制台中打开 matlab,但是使用此 class 我将无法保持打开状态。
有人知道我该怎么做吗?
这是意料之中的。来自 documentation:
If you exit Python with an engine still running, then Python
automatically stops the engine and its MATLAB process.
在我看来,您只想从 Python 启动 MATLAB,而不是实际使用 MATLAB 引擎。
为此,您可以使用 Python 的 subprocess 标准库,例如:
import subprocess
class Test:
def __init__(self):
subprocess.run(r"C:\Program Files\MATLAB\R2020a\bin\matlab.exe")
if __name__ == "__main__":
Test()
现在脚本将启动 MATLAB,并且 MATLAB 将在脚本终止时保持打开状态。
显然将显示的路径替换为计算机上 MATLAB 可执行文件的位置。
我在 windows 10 上使用 matlab 2017b 和 python 3。我想创建一个可以启动 matlab 并保持打开状态的 class。但是,matlab 在我完成 python 脚本后立即关闭。这是代码:
import matlab.engine
class Test:
def __init__(self):
self.eng = matlab.engine.start_matlab("-desktop")
if __name__ == "__main__":
Test()
我可以使用 "start_matlab" 命令在 python 控制台中打开 matlab,但是使用此 class 我将无法保持打开状态。 有人知道我该怎么做吗?
这是意料之中的。来自 documentation:
If you exit Python with an engine still running, then Python automatically stops the engine and its MATLAB process.
在我看来,您只想从 Python 启动 MATLAB,而不是实际使用 MATLAB 引擎。
为此,您可以使用 Python 的 subprocess 标准库,例如:
import subprocess
class Test:
def __init__(self):
subprocess.run(r"C:\Program Files\MATLAB\R2020a\bin\matlab.exe")
if __name__ == "__main__":
Test()
现在脚本将启动 MATLAB,并且 MATLAB 将在脚本终止时保持打开状态。 显然将显示的路径替换为计算机上 MATLAB 可执行文件的位置。