[英]Python os.pipe vs multiprocessing.Pipe
最近我正在研究Python中的并行编程工具。 这是os.pipe和multiprocessing.Pipe之间的两个主要区别。(尽管它们被使用)
我想知道我的理解是否正确,还有其他区别吗? 谢谢。
我相信你所陈述的一切都是正确的。
在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.