Примечание
С вызовом 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 вне процесса. Этот предел распространяется на данные плюс вспомогательная информация, переданная между процессами.