Pythonos.管道与多处理.Pip

2024-05-19 07:06:52 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我在用Python学习并行编程工具。这里有两个主要区别os.管道以及多处理.管道(不管使用的场合如何)

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

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


Tags: 工具编码管道os编程双向解码pickle
1条回答
网友
1楼 · 发布于 2024-05-19 07:06:52

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

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

multiprocessing.Pipe对象是更高级的接口,使用multiprocessing.Connection对象实现。在Linux上,它们实际上是构建在POSIX套接字之上的,而不是POSIX管道之上。在Windows上,它们是使用CreateNamedPipeAPI构建的。如您所述,multiprocessing.Connection对象可以发送/接收任何可选择的对象,并将自动处理pickling/unpickle过程,而不仅仅是处理字节。它们既可以是双向的,也可以是单向的。在

相关问题 更多 >

    热门问题