exponenta event banner

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

См. также