Ich arbeite an einem Programm, das Elemente aus einer Warteschlange liest, diese ändert und in die zweite Warteschlange verschiebt. Dies sollte durch mehrere CPUs durchgeführt werden, da die Modifikationsfunktion teuer ist. Das Programm bleibt beim Drucken der Druckschleife hängen (qOut.get()).python multiprocessing queue stucked
from multiprocessing import Pool, Queue
def update(qIn,qOut):
temp=qIn.get()
#this is going to be computationaly expensive function
qOut.put(temp+1)
def main():
#input queue
qIn=Queue()
#output queue
qOut=Queue()
#set input queue
for i in range(10):
qIn.put(i)
#set number of CPU cores
p=Pool(6)
#update each item in qIn and push it to qOut
for i in range(10):
p.apply_async(update, args=(qIn,qOut))
p.close()
p.join()
#check qOut
for i in range(10):
print(qOut.get())
if __name__ == '__main__':
main()