python不同的子进程和通信

python不同的子进程和通信,python,callback,multiprocessing,Python,Callback,Multiprocessing,第一个问题 我的python项目中有一个体系结构:主应用程序进程产生许多子进程。主进程侦听网络连接,然后接收到数据。主进程将该数据传递给所有子进程,而不相互侦听。子进程可以执行操作,也可以不执行操作(取决于接收到的数据),如果它们需要执行操作,则必须向主进程发送消息,让主进程通过其网络连接向服务器发送数据。对于我的体系结构,我想,最好有一个回调体系结构,该体系结构通常是通过四个头的观察者模式实现的 我有一个不仅仅是并行工作进程的进程——不同的子进程可以对从管道/队列接收到的相同数据执行不同的操作

第一个问题

我的python项目中有一个体系结构:主应用程序进程产生许多子进程。主进程侦听网络连接,然后接收到数据。主进程将该数据传递给所有子进程,而不相互侦听。子进程可以执行操作,也可以不执行操作(取决于接收到的数据),如果它们需要执行操作,则必须向主进程发送消息,让主进程通过其网络连接向服务器发送数据。对于我的体系结构,我想,最好有一个回调体系结构,该体系结构通常是通过四个头的观察者模式实现的

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

我已经尝试通过管道实现这一功能,但它需要大量数据(至少存储管道)我不知道如何用许多进程实现管道功能——在我看到的例子中,每一处都是用一个管道实现的,它是
,而True:
在有限循环中实现的——因此我不能使用它,因为主进程不知道此时要侦听所有子进程中的哪个(实际上,只有一个旧的子进程将执行一个操作)

我还试图通过队列来实现这一点,但如果其中一个子进程调用'task_queue.get()“-它将从任务队列中删除此项,但我需要将该数据传递给我的所有子进程。此外,在这两种方法中,我需要侦听所有子进程,但我希望观察它们的操作-如果某些子进程要执行操作-它将数据发送到主进程,然后在主进程中调用回调函数。”n和


我熟悉python,请告诉我如何实现这一点。

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

python
select
模块允许您同时在多个管道上等待I/O。