进程间通信时,队列相对于管道有什么优势?

9

如果使用两个队列来在进程之间通信,有哪些优点(如果有的话)?相比之下,使用管道有何不同之处?

我计划使用Python的multiprocessing模块。

2个回答

12

最大的优势在于队列是进程和线程安全的。管道不是:如果两个不同的进程尝试从管道的同一端读取或写入数据,会发生错误。队列在抽象层面上也比管道略高一级,这可能是在您特定情况下是否有优势的问题。


10
确实,多进程队列被实现为受锁保护的管道。 - Jonathan Feinberg
Jonathan的评论与之前的问题有关:http://stackoverflow.com/questions/2275108/python-multi-processing-queue-is-putting-independent-from-getting/ - jldupont

4
队列会保存消息,直到下一次队列激活并将其推送出去...即使管道或连接已断开...有了管道/连接,消息就会因错误而消失...
希望这可以帮助你。 最好的问候, 汤姆。

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