0

最初的问题在这里

我的 python 项目中有一个架构:主应用程序进程产生许多子进程。主进程监听网络连接,然后接收数据主进程将该数据传递给所有子进程,而不相互监听。子进程可能执行或不执行操作(取决于接收到的)数据,如果他们需要执行操作 - 他们必须向主进程发送消息,以使其通过其网络连接将数据发送到服务器。对于我的架构,我想,拥有一个通常通过observer pattern from head of four.

我有一个不仅仅是并行工作者的进程 - 它是不同的子进程,它们可以对它们可能从管道/队列接收的相同数据执行不同的操作,但是如果我将我的代码调整为队列,那么子进程必须使用 task_queue.get () 从父进程获取数据,但如果多个子进程之一将从 task_queue 获取任何任务 - 其他进程将不会收到该数据并且不会执行操作。我需要将 task_queue 中的每个任务传递给所有子进程并听取他们的回答。

我已经尝试通过管道来实现该功能 - 但它需要大量数据(至少存储管道)而且我不知道如何通过许多进程实现管道功能 - 在任何地方我看到的例子都是一个管道和这是while True:无限循环 - 因此我不能使用它,因为主进程现在不知道要监听所有子进程中的哪个(实际上只有一个旧子进程会执行操作)。

我也尝试通过队列来实现它 - 但如果其中一个子进程将调用“task_queue.get()” - 它将从任务队列中删除该项目,但我需要将该数据传递给我的所有子进程。此外,在这两种方法中,我需要监听所有子进程,但我想成为他们动作的观察者——如果某些子进程想要执行一个动作——它将数据发送到主进程,然后在主进程中调用回调-功能和...

我知道python,请给我如何实现这件事的方法。

4

1 回答 1

0

我建议在生成 n 个子进程之前在父进程中创建 n 个管道或队列。然后每个子进程都有一个用于通信的管道或队列。

于 2013-11-03T19:31:15.337 回答