首页 > 解决方案 > 为什么 `multiprocessing.Queue` 使用馈线线程?

问题描述

文档中:

当一个进程第一次将一个项目放入队列时,一个馈线线程被启动,它将对象从缓冲区传输到管道中。

这是为什么?multiprocessing.SimpleQueue没有这样的线程相处。仅仅是为了让作家不必等待对象被腌制吗?还是另有原因?

这个问题似乎是相关的,但那里给出的答案对我没有多大帮助。

标签: pythonpython-multiprocessing

解决方案


如果底层的缓冲区已满,似乎没有后台馈线线程(如 in SimpleQueue)将阻塞。使用容量为 16 页(自 Linux 2.6.35 起)实现。使用馈线线程(如 中),编写者不必等待底层管道。putPipePipe(duplex=False)os.pipeQueue


推荐阅读