2011-05-10 123 views
5

我有两个python程序,我想与他们沟通。
它们都是系统服务,它们都不是父进程派生的。如何沟通两个独立的python进程?

有没有办法做到这一点,而不使用套接字?
(例如,通过装箱一些队列 - >序列化 - >反序列化由其他过程和执行通信;或以哪个执行通信文件的进程id写,然后创建魔结构,其获取进程ID和发送一些消息给该过程。 ..)

该解决方案应该在Linux和Windows的工作。

+3

http://en.wikipedia.org/wiki/Inter-process_communication你挑。 – 2011-05-10 15:26:17

+0

相反,我正在寻找一些解决方案来在两个独立运行的进程之间共享管道。例如:在一个进程中创建管道,并以某种方式在其他进程中获取它。但我不知道如何。是否有可能没有套接字和文件 - 只是共享内存? – 2011-05-11 11:56:47

回答

3

你最好的赌注是ZeroMQ,这是在IPC设计,和极快的(同时支持TCP /多播消息以及)。 Python绑定非常好,并且易于使用。这里有一个很好的介绍ZeroMQ的Python:http://nichol.as/zeromq-an-introduction。如果你打算在多台机器上扩展它,AMQP(这是一个消息队列协议)将是一个很好的看法,有很多优秀的库用于与Python的AMQP合作。我非常喜欢kombucelery。你也可以考虑twisted,这给你一个相当疯狂的通信选项,以及一个很好的事件循环启动。

1

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

我认为Windows将它们支持在一定程度上。