首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python os.pipe与multiprocessing.Pipe

Python os.pipe与multiprocessing.Pipe
EN

Stack Overflow用户
提问于 2013-03-30 15:22:39
回答 1查看 2.1K关注 0票数 12

最近,我正在学习Python中的并行编程工具。以下是os.pipe和multiprocessing.Pipe的两个主要区别。

  1. unidirectional,is os.pipe multiprocessing.Pipe是bidirectional
  2. 当把东西放入管道/从管道接收东西时,os.pipe使用encode/decode,,而multiprocessing.Pipe使用pickle/unpickle

我想知道我的理解是否正确,还有其他的区别吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 03:34:00

我相信你所说的一切都是正确的。

在Linux上,os.pipe只是一个用于访问传统POSIX管道的Python接口。在Windows上,它是使用CreatePipe实现的。当您调用它时,您会得到两个普通的文件描述符。它是单向的,您只需在一端向它写入字节,然后由内核缓冲,直到有人从另一端读取。至少按照Python标准,这是相当低的级别。

multiprocessing.Pipe对象是更高级的接口,使用multiprocessing.Connection对象实现。在Linux上,这些实际上是构建在POSIX套接字之上的,而不是POSIX管道。在Windows上,它们是使用CreateNamedPipe API构建的。正如您已经注意到的,multiprocessing.Connection对象可以发送/接收任何可摘的对象,并且将自动处理泡菜/去泡菜过程,而不仅仅是处理字节。它们可以是双向的,也可以是单向的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15720120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档