我有一个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循环之前加入进程不是一个选项,因为队列被填满并且我遇到了死锁。