问题描述
当进程首先将项目放入队列时,将启动一个供料器线程,该线程将对象从缓冲区转移到管道中。
那是为什么? multiprocessing.SimpleQueue
没有这样的话题。是否只是为了让编写者不必等待对象被腌制?还是还有其他原因?
This question似乎相关,但是在那里给出的答案对我没有太大帮助。
解决方法
似乎没有后台馈送线程(例如SimpleQueue
),如果基础put
的缓冲区已满,Pipe
将阻塞。 Pipe(duplex=False)
是通过os.pipe
与capacity of 16 pages (since Linux 2.6.35)来实现的。使用供稿器线程(例如Queue
中的脚本),编写器不必等待基础管道。