単一のプロセス内でPythonインタープリターの複数のインスタンスを作成する方法はわかりませんが、複数のインスタンスを複数のプロセスに分割し、と通信した経験はありますzmq
。
私は、島間の通信を管理multiprocessing
するために、グローバル最適化のための島モデルアーキテクチャを実装するために使用してきました。zmq
各アイランドは、マスター群島プロセスによって作成および管理される独自のPythonインタープリターを備えた独自のプロセスです。
を使用multiprocessing
すると、必要な数の独立したPythonインタープリターを起動できますが、それらはすべて、個別のメモリスペースを持つ独自のプロセスに存在します。OSスケジューラは、コアへのプロセスの割り当てとCPU時間の共有を処理すると思います。個別のメモリスペースは、明示的に通信する必要があることを意味するため、最も難しい部分です。zmq
プロセス間で通信するには、バイト文字列を送信するため、送信するオブジェクト/データはシリアル化可能である必要があります。
良い点zmq
は、ネットワーク上に分散されたシステム間で拡張できることであり、非常に軽量です。REP / REQ、PUB / SUBなどを使用して、ほぼすべての通信パターンを作成できます。
しかし、いいえ、threading
モジュールからいくつかのスレッドをスピンアップするほど簡単ではありません。
編集:また、これはあなたと同様のスタックオーバーフローの質問です。内部には、単一のプロセス内で複数のPythonインタープリターを実行できる可能性があることを示す、より関連性の高いリンクがいくつかありますが、単純には見えません。 C /C++プログラムから呼び出された複数のオペレーティングシステムスレッド上の複数の独立した組み込みPythonインタープリター