【发布时间】:2011-07-22 23:44:22
【问题描述】:
我有一个进程创建了几个在 Python 2.5 中需要与之通信的子进程。我使用 subprocess 模块启动进程,将 stdin 和 stdout 设置为 subprocess.PIPE。到目前为止一切顺利。
然后,在一个循环中,我在每个子进程的标准输出流上运行 select.select() 等待它们告诉我它们准备好了。然后我写信给他们的标准输入,让他们工作并重复这个过程。
目前,我只是使用 stdin.write 和 stdout.readline 来进行通信。但是,我希望能够在进程之间传递复杂的消息。简单的换行符终止消息是不够的(除非我采取措施以某种方式转义消息中的新行)。我想我可以在所有消息前面加上字节长度,这样我的消息看起来像:
6:foobar
但这让我想到了我的问题:这样的东西已经存在了吗?我真的不想在这里重新发明轮子。我想要一个库,它可以告诉我何时准备好完整的消息并将其交给我。有许多其他协议以各种方式(TCP、消息队列服务器、HTTP 等)做这样的事情,但它们对于我的用例来说都是多余的。在 Python 中的进程之间进行消息传递的正确方法是什么?
【问题讨论】: