0
하나의 대기열에서 항목을 읽고 수정 한 다음 두 번째 대기열로 밀어 넣는 프로그램에서 작업하고 있습니다. 이는 계산상의 고비용 수정 기능으로 인해 다중 CPU로 수행되어야합니다. 인쇄 루프 인쇄 (qOut.get())에서 프로그램이 멈 춥니 다.파이썬 다중 처리 대기열이 갇혔다
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()