Соединение Python с рабочим сеансом работы с MATLAB

Можно соединить MATLAB® Engine для Python® к разделяемому сеансу работы с MATLAB, который уже работает локальной машине. Также можно соединиться с несколькими разделяемыми сеансами работы с MATLAB от одного сеанса Python. Можно совместно использовать сеанс работы с MATLAB в любое время во время сеанса, или в запуске с опцией запуска.

Соединение с разделяемым сеансом работы с MATLAB

Во-первых, преобразуйте свой сеанс работы с MATLAB в сеанс совместной работы. Из MATLAB вызывают matlab.engine.shareEngine.

matlab.engine.shareEngine

Запустите Python в подсказке операционной системы. Чтобы соединиться с разделяемым сеансом работы с MATLAB, вызовите matlab.engine.connect_matlab из Python. Можно вызвать любую функцию MATLAB из Python.

import matlab.engine
eng = matlab.engine.connect_matlab()
eng.sqrt(4.0)
2.0

Можно соединиться с сеансом совместной работы по наименованию. Чтобы найти имя сеанса совместной работы, вызовите matlab.engine.find_matlab из Python.

matlab.engine.find_matlab()
('MATLAB_13232',)

matlab.engine.find_matlab возвращает tuple с именами всех разделяемых сеансов работы с MATLAB на вашей локальной машине. В этом примере matlab.engine.shareEngine дал сеансу совместной работы имя по умолчанию MATLAB_13232, где 13232 ID процесса MATLAB. Операционная система дает сеансу работы с MATLAB различный ID процесса каждый раз, когда вы запускаете MATLAB.

Соединитесь с сеансом работы с MATLAB по наименованию.

eng.quit()
newEngine = matlab.engine.connect_matlab('MATLAB_13232')

Если вы не задаете имя сеанса совместной работы, matlab.engine.connect_matlab соединяется с первым сеансом, названным в tuple, возвращенном matlab.engine.find_matlab.

Соединение асинхронно с разделяемым сеансом работы с MATLAB

Из MATLAB преобразуйте свой сеанс работы с MATLAB в сеанс совместной работы.

matlab.engine.shareEngine

Запустите Python в подсказке операционной системы. Соединитесь асинхронно с разделяемым сеансом работы с MATLAB.

import matlab.engine
future = matlab.engine.connect_matlab(background=True)
eng = future.result()

Вызовите функцию MATLAB из Python.

eng.sqrt(4.0)
2.0

Соединение с несколькими разделяемыми сеансами работы с MATLAB

Можно соединиться с несколькими разделяемыми сеансами работы с MATLAB из Python.

Запустите второй сеанс работы с MATLAB. Из MATLAB вызывают matlab.engine.shareEngine. Дайте имя второму сеансу совместной работы. Имя должно быть допустимым именем переменной MATLAB. Для получения информации о допустимых именах переменной смотрите Имена переменных.

matlab.engine.shareEngine('MATLABEngine2')

Из Python найдите все разделяемые сеансы работы с MATLAB.

import matlab.engine
matlab.engine.find_matlab()
('MATLAB_13232','MATLABEngine2')

Чтобы соединиться с разделяемыми сеансами работы с MATLAB, вызовите matlab.engine.connect_matlab из Python.

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

Можно запустить сеанс с имени по умолчанию или дать имя, заключенное в одинарные кавычки.

Смотрите также

| | | |

Похожие темы