1
請注意如何在Python中使用多處理時保持順序。 func和somefunc都返回列表。謝謝,在Python中使用多處理時保持順序
results = []
def callback(*args): results.append(*args)
def in_parallel(fn, func):
print 'Process started on',time.strftime('%H:%M:%S')
pool = mp.Pool(processes = 4)
for num, i in enumerate(somefunc(fn)):
pool.apply_async(func, args = (i,), callback = callback([num, callback]))
pool.close()
pool.join()
return results
當你說「維持秩序」你希望保持results'的'基於時間的計算是訂貨完成或別的什麼? – shuttle87 2014-10-10 13:49:40
不,我想保持由somefunc返回的輸入列表的順序 – user1192422 2014-10-10 14:06:34
你真的想要'callback' kwarg做什麼?現在你只要在調用apply_async後立即追加'num',然後將'callback'函數對象追加到'results',然後將'callback'關鍵字參數賦值給'result.append的返回值'電話,這是'沒有'。這絕對不是你想要做的。 – dano 2014-10-10 14:17:18