[英]Python multiprocessing queue is empty
我有一個令人尷尬的並行代碼,它創建一個數組列表,並且想對其進行並行化(這是我第一次使用python的多處理技術,因此我仍在掌握這些概念)。 runNramps(* args)返回五個數組t1,c1,e1,m1和d1。 我想在多個線程中運行它,並將所有作業的答案結合在一起。
這是我試圖通過在多個進程中運行來並行化的代碼。 我的作業似乎可以執行並正確關閉,但是隊列為空,queue.get()不返回任何內容。 我想我沒有將所有輸出合並在一起的方法,但是我在SO / google上找不到任何好的示例。
這是我的代碼的線程版本(我想對上一個函數進行最小的更改,然后多次調用,將結果連接到一個數組中)。
def runPramps(numramps,rmpslope,nframes,cosmag=0,method='2pt',thresh=1.0):
output = mp.Queue()
processes = [mp.Process(target=runNramps, args=(numramps,rmpslope,nframes,cosmag,method,thresh)) for x in range(4)] #4 processes for example
for p in processes:
p.start()
print "started", p
for p in processes:
p.join()
print 'ended',p
results = output.get(False) #it hangs here
return results
我確定自己正在運行並結束進程,因此我有一個小錯誤/誤解。
非常感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.