Примечание
С вызовом Python связаны накладные расходы® функции вне процесса. Это поведение влияет на эффективность. MathWorks рекомендует вызов функций Python в процессе, который является режимом по умолчанию.
MATLAB® может запускать Python скрипты и функции в отдельном процессе. Выполнение Python в отдельном процессе позволяет вам:
Используйте в коде Python некоторые сторонние библиотеки, несовместимые с MATLAB.
Изолируйте процесс MATLAB от сбоев в коде Python.
Чтобы закончить процесс, вызовите pyenv
функция со "ExecutionMode"
для аргумента задано значение "OutOfProcess"
. Например, предположим, что вы хотите создать эту list
переменная в среде Python.
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
Чтобы создать эту list
вне процесса установите режим выполнения MATLAB на "OutOfProcess"
. MATLAB отображает информацию о текущем окружении Python.
pyenv("ExecutionMode","OutOfProcess")
ans = PythonEnvironment with properties: Version: "2.7" Executable: "C:\Python27\pythonw.exe" Library: "C:\windows\system32\python27.dll" Home: "C:\Python27" Status: NotLoaded ExecutionMode: OutOfProcess
Создайте переменную.
py.list({'Monday','Tuesday','Wednesday','Thursday','Friday'})
ans = Python list with no properties. ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
MATLAB создает процесс с именем MATLABPyHost
.
pyenv
ans = PythonEnvironment with properties: Version: "2.7" Executable: "C:\Python27\pythonw.exe" Library: "C:\windows\system32\python27.dll" Home: "C:\Python27" Status: Loaded ExecutionMode: OutOfProcess ProcessID: "8196" ProcessName: "MATLABPyHost"
Примечание
Очистка объекта Python является асинхронной, что означает, что объект Python может остаться в Python после вызова синхронного вызова. Например, в следующем коде возможно, что myList2
создается до myList
уничтожается.
myList=py.list;
clear myList
myList2 = py.list;
Размер переменных, переданных между Python и MATLAB, ограничивается 2 ГБ при вызове функции Python вне процесса. Этот предел распространяется на данные плюс вспомогательная информация, переданная между процессами.