Main Content

実行中の MATLAB セッションへの Python の接続

ローカル マシンで既に実行中の共有 MATLAB® セッションに、Python® 用 MATLAB エンジンを接続できます。また、単一の Python セッションから複数の共有 MATLAB セッションに接続することもできます。MATLAB セッションは、セッション中の任意の時点に、あるいは起動オプションを使って起動時に共有できます。

共有 MATLAB セッションへの接続

まず、MATLAB セッションを共有セッションに変換します。MATLAB から matlab.engine.shareEngine を呼び出します。

matlab.engine.shareEngine

オペレーティング システム プロンプトで Python を起動します。共有 MATLAB セッションに接続するには、Python から matlab.engine.connect_matlab を呼び出します。任意の MATLAB 関数を Python から呼び出すことができます。

import matlab.engine
eng = matlab.engine.connect_matlab()
eng.sqrt(4.0)
2.0

共有セッションには名前を使って接続できます。共有セッションの名前を見つけるには、Python から matlab.engine.find_matlab を呼び出します。

matlab.engine.find_matlab()
('MATLAB_13232',)

matlab.engine.find_matlab は、ローカル マシン上のすべての共有 MATLAB セッションの名前を含む tuple を返します。この例では、matlab.engine.shareEngine は共有セッションに MATLAB_13232 という既定の名前を与えました。ここで、13232 は MATLAB プロセスの ID です。オペレーティング システムは、MATLAB が起動するたびに、MATLAB セッションに異なるプロセス ID を与えます。

MATLAB セッションに名前を使って接続します。

eng.quit()
newEngine = matlab.engine.connect_matlab('MATLAB_13232')

共有セッションの名前を指定しない場合、matlab.engine.connect_matlab は、matlab.engine.find_matlab によって返された tuple で最初に挙げられているセッションに接続します。

MATLAB の共有セッションへの非同期的での接続

MATLAB で MATLAB セッションを共有セッションに変換します。

matlab.engine.shareEngine

オペレーティング システム プロンプトで Python を起動します。MATLAB の共有セッションに非同期で接続します。

import matlab.engine
future = matlab.engine.connect_matlab(background=True)
eng = future.result()

Python から MATLAB 関数を呼び出します。

eng.sqrt(4.0)
2.0

複数の共有 MATLAB セッションへの接続

Python から複数の共有 MATLAB セッションに接続できます。

2 番目の MATLAB セッションを開始します。MATLAB から matlab.engine.shareEngine を呼び出します。2 番目の共有セッションに名前を付けます。名前は有効な MATLAB 変数名でなければなりません。有効な変数名についての詳細は、変数名を参照してください。

matlab.engine.shareEngine('MATLABEngine2')

Python で、すべての共有 MATLAB セッションを検索します。

import matlab.engine
matlab.engine.find_matlab()
('MATLAB_13232','MATLABEngine2')

共有 MATLAB セッションに接続するには、Python から matlab.engine.connect_matlab を呼び出します。

eng1 = matlab.engine.connect_matlab('MATLAB_13232')
eng2 = matlab.engine.connect_matlab('MATLABEngine2')

起動オプションを用いた共有 MATLAB セッションの開始

既定では、MATLAB セッションは共有されていません。しかし、起動オプションを用いて MATLAB を共有セッションとして起動することができます。

共有 MATLAB セッションをオペレーティング システムのプロンプトで開始します。

matlab -r "matlab.engine.shareEngine"
matlab -r "matlab.engine.shareEngine('MATLABEngine3')"

共有セッションは、既定の名前または一重引用符で囲んで名前を指定して開始できます。

参考

| | | |

関連するトピック