为什么“ multiprocessing.Queue”使用馈线线程?

问题描述

来自documentation

当进程首先将项目放入队列时,将启动一个供料器线程,该线程将对象从缓冲区转移到管道中。

那是为什么? multiprocessing.SimpleQueue没有这样的话题。是否只是为了让编写者不必等待对象被腌制?还是还有其他原因?

This question似乎相关,但是在那里给出的答案对我没有太大帮助。

解决方法

似乎没有后台馈送线程(例如SimpleQueue),如果基础put的缓冲区已满,Pipe将阻塞。 Pipe(duplex=False)是通过os.pipecapacity of 16 pages (since Linux 2.6.35)来实现的。使用供稿器线程(例如Queue中的脚本),编写器不必等待基础管道。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...