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