将 Python 连接到正在运行的 MATLAB 会话
您可以将用于 Python® 的 MATLAB® 引擎连接到已在您的本地机器上运行的共享 MATLAB 会话。您也可以从单一 Python 会话连接到多个共享 MATLAB 会话。您可以在 MATLAB 会话期间的任何时间共享该会话,也可以在使用启动选项启动该会话时共享它。
连接到共享 MATLAB 会话
首先,将您的 MATLAB 会话转换为共享会话。从 MATLAB 调用 matlab.engine.shareEngine
。
matlab.engine.shareEngine
在操作系统提示符下启动 Python。要连接到共享 MATLAB 会话,请从 Python 中调用 matlab.engine.connect_matlab
。您可以从 Python 中调用任何 MATLAB 函数。
import matlab.engine
eng = matlab.engine.connect_matlab()
eng.sqrt(4.0)
2.0
您可以按名称连接到共享会话。要查找共享会话的名称,请从 Python 调用 matlab.engine.find_matlab
。
matlab.engine.find_matlab()
('MATLAB_13232',)
matlab.engine.find_matlab
返回一个 tuple
,其中包含您的本地机器上所有共享 MATLAB 会话的名称。在本示例中,matlab.engine.shareEngine
为共享会话提供了默认名称 MATLAB_13232
,其中 13232 是 MATLAB 进程的 ID。每当您启动 MATLAB 时,操作系统都会为 MATLAB 会话提供一个不同的进程 ID。
按名称连接到 MATLAB 会话。
eng.quit()
newEngine = matlab.engine.connect_matlab('MATLAB_13232')
如果您未指定具体共享会话的名称,则 matlab.engine.connect_matlab
会连接到由 matlab.engine.find_matlab
返回的 tuple
中指定的第一个会话。
异步连接到共享 MATLAB 会话
从 MATLAB 中,将您的 MATLAB 会话转换为共享会话。
matlab.engine.shareEngine
在操作系统提示符下启动 Python。异步连接到共享 MATLAB 会话。
import matlab.engine
future = matlab.engine.connect_matlab(background=True)
eng = future.result()
从 Python 调用 MATLAB 函数。
eng.sqrt(4.0)
2.0
连接到多个共享 MATLAB 会话
您可以从 Python 连接到多个共享 MATLAB 会话。
启动另一个 MATLAB 会话。从 MATLAB 调用 matlab.engine.shareEngine
。为第二个共享会话命名。该名称必须是有效的 MATLAB 变量名称。有关有效变量名称的信息,请参阅变量名称。
matlab.engine.shareEngine('MATLABEngine2')
从 Python 中查找所有共享 MATLAB 会话。
import matlab.engine
matlab.engine.find_matlab()
('MATLAB_13232','MATLABEngine2')
要连接到共享 MATLAB 会话,请从 Python 中调用 matlab.engine.connect_matlab
。
eng1 = matlab.engine.connect_matlab('MATLAB_13232')
eng2 = matlab.engine.connect_matlab('MATLABEngine2')
使用启动选项启动共享 MATLAB 会话
默认情况下,MATLAB 会话不共享。但是,您可以使用启动选项将 MATLAB 作为共享会话启动。
在操作系统提示符下启动共享 MATLAB 会话。
matlab -r "matlab.engine.shareEngine" matlab -r "matlab.engine.shareEngine('MATLABEngine3')"
您可以使用默认名称启动会话,或者用单引号括起名称来启动会话。
另请参阅
matlab.engine.shareEngine
| matlab.engine.isEngineShared
| matlab.engine.engineName
| matlab.engine.connect_matlab
| matlab.engine.find_matlab