如何通信两个独立的Python进程?

6
我有两个 Python 程序,想要让它们进行通信。两个程序都是系统服务,没有被父进程分叉。
有没有不使用 sockets 的方法来实现这一点?例如创建某些队列 -> 序列化 -> 反序列化到其他进程并执行通信;或者将要执行通信的进程 ID 写入文件,然后创建魔术结构以获取进程 ID 并向该进程发送一些消息...
此解决方案应在 Linux 和 Windows 上可行。

3
请自行选择:http://en.wikipedia.org/wiki/Inter-process_communication - Jochen Ritzel
我正在寻找一种解决方案,以便在两个单独运行的进程之间共享管道。例如:在一个进程中创建管道,并以某种方式在另一个进程中获取它。但我不知道如何做到这一点。是否可以使用共享内存而无需套接字和文件来实现? - Robert Zaremba
2个回答

5
你最好的选择是ZeroMQ,它专为IPC设计,速度非常快(也支持TCP /多播消息)。Python绑定非常好用。这里有一个关于使用Python介绍ZeroMQ的好文章:http://nichol.as/zeromq-an-introduction。如果你计划将其扩展到多台机器上,AMQP(一种消息队列协议)是一个不错的选择,有很多优秀的Python库可供使用,我非常喜欢kombucelery。你也可以考虑使用twisted,它提供了相当多的通信选项,并且还有一个不错的事件循环。

1
在Linux上,您可以使用命名管道。请注意,写入程序/线程将阻塞,直到读取器打开管道。我认为Windows在某种程度上也支持它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接