Connect Python to Running MATLAB Session
You can connect the MATLAB® Engine for Python® to a shared MATLAB session that is already running on your local machine. You also can connect to multiple shared MATLAB sessions from a single Python session. You can share a MATLAB session at any time during the session, or at start with a startup option.
Connect to Shared MATLAB Session
First, convert your MATLAB session to a shared session. From MATLAB call matlab.engine.shareEngine
.
matlab.engine.shareEngine
Start Python at the operating system prompt. To connect to the shared MATLAB session, call matlab.engine.connect_matlab
from
Python. You can call any MATLAB function from Python.
import matlab.engine
eng = matlab.engine.connect_matlab()
eng.sqrt(4.0)
2.0
You can connect to a shared session by name. To find the name of a shared session,
call matlab.engine.find_matlab
from Python.
matlab.engine.find_matlab()
('MATLAB_13232',)
matlab.engine.find_matlab
returns a tuple
with the names of all shared MATLAB sessions on your local machine. In this example
matlab.engine.shareEngine
gave the shared session the default
name MATLAB_13232
, where 13232 is the ID of the MATLAB process. The operating system gives the MATLAB session a different process ID whenever you start MATLAB.
Connect to the MATLAB session by name.
eng.quit()
newEngine = matlab.engine.connect_matlab('MATLAB_13232')
If you do not specify the name of a shared session,
matlab.engine.connect_matlab
connects to the first session
named in the tuple
returned by
matlab.engine.find_matlab
.
Connect Asynchronously to Shared MATLAB Session
From MATLAB, convert your MATLAB session to a shared session.
matlab.engine.shareEngine
Start Python at the operating system prompt. Connect asynchronously to the shared MATLAB session.
import matlab.engine
future = matlab.engine.connect_matlab(background=True)
eng = future.result()
Call a MATLAB function from Python.
eng.sqrt(4.0)
2.0
Connect to Multiple Shared MATLAB Sessions
You can connect to multiple shared MATLAB sessions from Python.
Start a second MATLAB session. From MATLAB call matlab.engine.shareEngine
. Give a name to the
second shared session. The name must be a valid MATLAB variable name. For information on valid variable names, see Variable Names.
matlab.engine.shareEngine('MATLABEngine2')
From Python, find all shared MATLAB sessions.
import matlab.engine
matlab.engine.find_matlab()
('MATLAB_13232','MATLABEngine2')
To connect to the shared MATLAB sessions, call matlab.engine.connect_matlab
from
Python.
eng1 = matlab.engine.connect_matlab('MATLAB_13232')
eng2 = matlab.engine.connect_matlab('MATLABEngine2')
Start Shared MATLAB Sessions with Startup Options
By default MATLAB sessions are not shared. However, you can start MATLAB as a shared session with a startup option.
Start shared MATLAB sessions at the operating system prompt.
matlab -r "matlab.engine.shareEngine" matlab -r "matlab.engine.shareEngine('MATLABEngine3')"
You can start a session with a default name, or give a name enclosed in single quotes.
See Also
matlab.engine.shareEngine
| matlab.engine.isEngineShared
| matlab.engine.engineName
| matlab.engine.connect_matlab
| matlab.engine.find_matlab