0

PythonスクリプトAとPythonスクリプトBがあります。

どちらも独立して動いています。スクリプトBの実行が終了したらすぐに、スクリプトAに「B Done」というメッセージを送信する必要があります。

単純なメッセージは、ソケットなどによって送信された可能性があります。ただし、スクリプト A は独自の作業を行っています。A の実行を停止せずに A に B をリッスンさせるにはどうすればよいですか?

どんな助けでも大歓迎です!

編集:

B は完全に CPU バウンド - 計算です。A は、I/O バウンドと CPU バウンドが混在しています。I/O は明らかにキーストロークであり、CPU バウンド タスクは入力されたキーに対して実行される計算です。

4

1 に答える 1

1

この問題領域には多くの解決策があります。

アプリケーション間でメッセージングパターンを簡単に作成できるZMQをチェックアウトすることをお勧めします。

メッセージチャネルは独自のスレッドで実行されます。これは、geventと一緒に使用した場合に不要なオーバーヘッドを回避するために、「グリーン」スレッドである可能性があります。

geventとzmqを組み合わせたいくつかの例:https
://github.com/zeromq/pyzmq/tree/master/examples/gevent さまざまなメッセージングパターンの優れたガイド:ZMQガイド

これらのライブラリを使用して、AとBの間にチャネルを作成します。このチャネルは、新しい作業を継続的にポーリングし、結果を報告します。

AとBの間にブローカーがある場合、他のいくつかのソリューションが存在しますが、ノード間に直接リンクを設定する方が、説明しているようなインタラクティブなアプリケーションに適している可能性があります。

于 2013-03-22T20:11:14.320 に答える