Out-of-Process Execution of Python Functionality
R2026bNote
There is overhead associated with calling Python® functions out-of-process. This behavior affects performance. Call 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.
Isolate the MATLAB process from crashes in the Python code.
Interrupt long-running or unresponsive Python code by pressing Ctrl+C. (since R2026b)
Run Python Functionality Out-of-Process
To run out-of-process, call the pyenv function
with the "ExecutionMode" argument set to
"OutOfProcess". For example, suppose that you want to create this
list variable in the Python environment.
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
To create this list 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: "3.11"
Executable: "C:\Python311\pythonw.exe"
Library: "C:\windows\system32\python311.dll"
Home: "C:\Python311"
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 creates a process named MATLABPyHost.
pyenv
ans =
PythonEnvironment with properties:
Version: "3.11"
Executable: "C:\Python311\pythonw.exe"
Library: "C:\windows\system32\python311.dll"
Home: "C:\Python311"
Status: Loaded
ExecutionMode: OutOfProcess
ProcessID: "8196"
ProcessName: "MATLABPyHost"
Out-of-Process Behavior and Limitations
When running Python out-of-process, keep these points in mind:
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.
Clearing a Python object is asynchronous, which means that the Python object might remain in Python after the synchronous call. For example, in the following code it is possible that
myList2is created beforemyListis destroyed.myList=py.list; clear myList myList2 = py.list;Using
clear classesto free system memory will terminate theMATLABPyHostprocess and clear any Python objects. For alternatives to usingclear classes, see the Tips section of theclearreference page.You can interrupt a long-running or unresponsive Python program running out-of-process by pressing Ctrl+C, which terminates the
MATLABPyHostprocess. Before running Python again, you must first callterminate(pyenv)to properly shut down the Python environment. (since R2026b)