2

私は2種類のプロセスを持っています。

Bprocessからのメッセージを待つprocess が必要ですAAメッセージを送信したら、プロセスBはメッセージを処理し、再び待機する必要があります。

Aまた、 processと processの複数のインスタンスがありますB。したがって、すべてのBプロセスがメッセージをすべてのAプロセスに送信する必要があります。

のようなものを見ていましsignalsたが、紐が付いています。

これを行う最善の方法は何ですか?

を作成して を読み続けることができることはわかっていますが、pipe効率が悪いようです。また、一度読んだものから削除されませんか?pipewhilepipe

注: どのプロセスも相互のサブプロセスではありません。

4

2 に答える 2

1

これは私が最終的にやったことです...

プロデューサー プロセスを に作成し、moduleそれをコンシューマーにインポートしました。したがって、両方のプロセスが変数を共有できます。

プロデューサ スレッドは生成を続け、コンシューマ スレッドは消費を続けます。そして、私はconditionデータを同期するために使用していますthreading.Condition().

各プロデューサー スレッド:

  • 取得condition
  • グローバル変数にデータを書き込む
  • 電話notifyAll()
  • リリースcondition

各コンシューマ スレッド:

  • 取得condition
  • を待つcondition
  • グローバル変数のデータを読み取って処理する
  • 待ってcondition...

これは単なる高レベルのビューです。私の場合、それぞれが異なるデータを生成し、特定のコンシューマー グループを対象とした、さまざまな種類のプロデューサー スレッドを使用しています。だから、私は持っていlist of conditionます。

条件の参照

于 2013-01-27T10:10:21.860 に答える
0

ZeroMQ への Python バインディングを提案します: http://www.zeromq.org/。pyzmq、おそらく: https://github.com/zeromq/pyzmq

于 2013-04-21T17:03:11.020 に答える