Out-of-Process Execution ofPythonFunctionality
Note
There is overhead associated with calling Python®functions out-of-process. This behavior affects performance. MathWorks recommends calling Python functions in-process, which is the default mode.
MATLAB®can run Python scripts and functions in a separate process. Running Python in a separate process enables you to:
Use some third-party libraries in the Python code that are not compatible with MATLAB.
隔离MATLABprocess from crashes in the Python code.
To run out-of-process, call thepyenv
function with the"ExecutionMode"
argument set to"OutOfProcess"
. For example, suppose that you want to create thislist
variable in the Python environment.
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
To create thislist
out-of-process, set the MATLAB execution mode to"OutOfProcess"
. MATLAB displays information about your current Python environment.
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
Create the variable.
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"
Note
Clearing a Python object is asynchronous, which means that the Python object might remain in Python after the invocation of a synchronous call. For example, in the following code it is possible thatmyList2
is created beforemyList
is destroyed.
myList=py.list; clearmyListmyList2 = py.list;
Limitations
The size of variables passed between Python and MATLAB is limited to 2 GB when you call a Python function out-of-process. This limit applies to the data plus supporting information passed between the processes.