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