如何使用python信号在独立进程之间发送消息?

问题描述:

我有两种类型的进程。如何使用python信号在独立进程之间发送消息?

我希望进程B等待来自进程A的消息。一旦A发送消息,进程B应处理消息并再次等待。

此外,我将有多个进程A和进程B的实例。因此,所有B进程都应将消息发送到所有A进程。

我在看像signals,但附带一个字符串。

这样做的最好方法是什么?

我知道我可以创建一个pipe并继续阅读pipewhile,但它似乎无益。另外,一旦阅读,它会不会从pipe中删除?

注意:没有一个进程是彼此的子进程。

+1

进程'A'和'B'如何知道对方? –

+1

他们没有。但是如果有帮助的话,我可以让所有'A'进程在某处注册它们的线程标识。 – ATOzTOA

这是我结束了在最后做...

的制造生产加工成module并将其导入到消费者。因此,这两个过程都可以共享变量。

生产者线程将继续生产,消费者线程将继续消耗。我正在使用condition来同步数据,threading.Condition()

每个生产者线程:

  • 采集condition
  • 将数据写入到一个全局变量
  • 呼叫notifyAll()
  • 发布condition

每个消费者线程:

  • 采集condition
  • 等待condition
  • 读取和处理数据的全局变量
  • 等待condition ...

这仅仅是一个高层次视图。就我而言,我有不同类型的生产者线程,每个生成不同的数据并且针对特定的消费者群体。所以,我有一个list of condition

Reference on condition

我建议python绑定到ZeroMQ:http://www.zeromq.org/。pyzmq,或许:https://github.com/zeromq/pyzmq