如何沟通两个单独的python进程?

时间:2011-05-10 15:19:54

标签: python process parallel-processing multiprocessing

我有两个python程序,我想传达它们。
它们都是系统服务,并且它们都不是由父进程分叉的。

有没有办法在不使用套接字的情况下执行此操作?
(例如,通过创建一些队列 - >序列化它 - >通过其他进程反序列化并执行通信;或者写入执行通信的文件进程ID,然后创建获取进程ID的魔术结构并向此进程发送一些消息。 ..)

该解决方案应该适用于Linux和Windows。

2 个答案:

答案 0 :(得分:3)

最好的选择是ZeroMQ,这是专为IPC设计的,并且非常快(也支持TCP /多播消息传递)。 Python绑定非常好,易于使用。这里有一个关于ZeroMQ和Python的很好的介绍:http://nichol.as/zeromq-an-introduction。如果您打算在多台计算机上扩展它,那么AMQP(这是一个消息队列协议)将是一个很好的看法,有很多很棒的库用于处理AMQP for python。我非常喜欢kombucelery。您还可以考虑twisted,它为您提供了相当疯狂的通信选项,以及一个很好的事件循环来启动。

答案 1 :(得分:1)

在Linux上,您可以使用命名管道。 http://en.wikipedia.org/wiki/Named_pipe请注意,编写程序/线程将阻塞,直到读者打开管道。

我认为Windows在某种程度上支持它们。