Python多处理 - 队列处理

时间:2017-03-05 17:02:40

标签: python multiprocessing python-multiprocessing

我有一个Queue()多个我的进程使用。如果我在.get() Queue()之前没有.join()进程,那么Queue()会变满,我会陷入僵局。所以我必须从队列中读取,而某些进程可能仍然使用它。为此,我目前使用

q = multiprocessing.Queue()
#start processes that write to it
while not q.empty():
    msg = q.get()
    output.append(msg)
print("Finished while loop")
for process in processes:
    process.join()

然而,我注意到,一些进程在循环结束后写入队列,这是可以理解的:很可能是,读取比写入更快,因此队列获得在所有流程完成之前清空。如何确保队列连续读取(因此我不会遇到死锁),但是如果进程完成,队列中的读取只会停止?在while循环之前加入进程不是一个选项,因为队列被填满并且我遇到了死锁。

0 个答案:

没有答案