プロセス間で「シングルトニック」クラスの同じインスタンスを共有するようにコーディングするにはどうすればよいですか?
5 に答える
最善の方法は、1 つの特定のプロセスをそのインスタンスの所有者として指定し、そのインスタンス専用にすることです。そのインスタンスへのアクセスを必要とする他のプロセスは、キュー (マルチプロセッシング モジュールによって提供される) またはメッセージ パッシング用の他の IPC メカニズムを介して所有プロセスにメッセージを送信することによってインスタンスを取得し、同様のメカニズムを介して応答を取得します。
プロセスの要点は、異なるアドレス空間を持つことです。プロセス間で情報を共有したい場合は、何らかのプロセス間通信手段を使用する必要があります。
プロセス間でインスタンスを共有できるとは思いませんが、インスタンスに共有メモリにアクセスさせることはできます: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes状態を制御するそれが本当にやりたいことなら。
ただし、他の回答で述べたように、キューを使用して目的を達成する方が簡単な場合があります。
Python 2.6 では、multiprocessingモジュールにはプロセス間で状態を共有するValueために使用されるオブジェクトがあります。この方法で状態を共有する方法のアイデアを提供するコードサンプルがあり、シングルトンクラスを作成するときにこのアプローチを使用できます。