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

Смотрите также