最近,我正在学习Python中的并行编程工具。以下是os.pipe和multiprocessing.Pipe的两个主要区别。
我想知道我的理解是否正确,还有其他的区别吗?谢谢。
发布于 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对象可以发送/接收任何可摘的对象,并且将自动处理泡菜/去泡菜过程,而不仅仅是处理字节。它们可以是双向的,也可以是单向的。
https://stackoverflow.com/questions/15720120
复制相似问题