Непроцессное выполнение функциональности Python

Примечание

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

См. также