ここで最初の質問。
Python プロジェクトにアーキテクチャがあります。メイン アプリケーション プロセスが多くの子プロセスを生成します。メインプロセスがネットワーク接続をリッスンし、データを受信すると、メインプロセスはそのデータを相互にリッスンせずにすべての子プロセスに渡します。子プロセスは、アクションを実行するかどうか (受信したデータによって異なります) があり、アクションを実行する必要がある場合は、メイン プロセスにメッセージを送信して、ネットワーク接続を介してサーバーにデータを送信できるようにする必要があります。私のアーキテクチャでは、通常は で実現するコールバック アーキテクチャがあればいいと思いますobserver pattern from head of four
。
単なる並列ワーカーではないプロセスがあります-パイプ/キューから受け取る可能性のある同じデータに対して異なるアクションを実行できるのは異なる子プロセスですが、コードをキューに適応させる場合、子プロセスは task_queue.get を使用する必要があります() 親プロセスからデータを取得しますが、多くの子プロセスの 1 つが task_queue からタスクを取得した場合、他のプロセスはそのデータを受信せず、アクションを実行しません。各タスクを task_queue からすべての子プロセスに渡し、それらからの応答を聞く必要があります。
私はすでにその機能をパイプで実現しようとしましたが、多くのデータ(少なくともストアパイプ)が必要であり、多くのプロセスでパイプ機能を実現する方法がわかりません-例を見たどこでも、1つのパイプであり、それはwhile True:
無限ループでした-したがって、メインプロセスはこの時点ですべての子プロセスのどれをリッスンするかわからないため、それを使用できません(実際には、古い子プロセスの1つだけがアクションを実行します)。
私もキューでそれを実現しようとしましたが、子プロセスの1つが「task_queue.get()」を呼び出すと、タスクキューからこのアイテムが削除されますが、そのデータをすべての子プロセスに渡す必要があります。また、これらの両方のメソッドで、すべての子プロセスをリッスンする必要がありますが、それらのアクションのオブザーバーになりたいです-子プロセスの一部がアクションを実行したい場合-データをメインプロセスに送信し、メインプロセスでコールバックを呼び出します-機能と...
私はpythonを知っています。どうすればこのことを実現できるか教えてください。