2014-10-10 38 views
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 
+0

当你说“维持秩序”你希望保持results'的'基于时间的计算是订货完成或别的什么? – shuttle87 2014-10-10 13:49:40

+0

不,我想保持由somefunc返回的输入列表的顺序 – user1192422 2014-10-10 14:06:34

+0

你真的想要'callback' kwarg做什么?现在你只要在调用apply_async后立即追加'num',然后将'callback'函数对象追加到'results',然后将'callback'关键字参数赋值给'result.append的返回值'电话,这是'没有'。这绝对不是你想要做的。 – dano 2014-10-10 14:17:18

回答

1

的问题已经解决了以下内容:

r = pool.map_async(...) 
    r.wait()