繁体   English   中英

Python os.pipe与multiprocessing.Pipe

[英]Python os.pipe vs multiprocessing.Pipe

最近我正在研究Python中的并行编程工具。 这是os.pipe和multiprocessing.Pipe之间的两个主要区别。(尽管它们被使用)

  1. os.pipe是单向的 ,多处理。管道是双向的 ;
  2. 当把东西放入管道/从管道接收东西时,os.pipe使用编码/解码 ,而多处理。管道使用pickle / unpickle

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

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

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

multiprocessing.Pipe对象是更高级的接口,使用multiprocessing.Connection实现。连接对象。 在Linux上,这些实际上是建立在POSIX套接字之上,而不是POSIX管道。 在Windows上,它们是使用CreateNamedPipe API构建的。 如你所述, multiprocessing.Connection对象可以发送/接收任何可选对象,并自动处理pickle / unpickling进程,而不仅仅是处理字节。 它们既可以是双向的,也可以是单向的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM