Main Content

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')"

您可以使用默认名称启动会话,或者用单引号括起名称来启动会话。

另请参阅

| | | |

相关主题