2014-01-23 43 views
0

从并行运行的所有进程中收集数据的最佳方式是什么?获取单个流程的返回值不是问题,但是如何汇总它们?如何连接来自不同进程的返回数据

class Controller(object): 

    def get_square(self,a): 
     return a*a 

if __name__=="__main__": 
    controller=Controller() 
    jobs=[] 
    for param in (10,20,30): 
     process=Process(target=controller.get_square,kwargs={"a":param}) 
     jobs.append(process) 
     process.start() 
    for job in jobs: 
     job.join() 
    # printing result for all processes 
+1

使用'Queue'或'Pipe'。请参阅[在进程之间交换对象](http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes) – roippi

+1

一般而言,您希望工作单位比平方号码:-) – roippi

+0

肯定的事情,这只是一个例子;) –

回答

1
from multiprocessing import Process, Queue 

def square(a, qOut): 
    qOut.put(a**2) 

if __name__ == "__main__": 
    qOut = Queue() 
    params = (10, 20, 30) 
    jobs = [] 
    for p in params: 
     proc = Process(target=square, kwargs={'a':p, 'qOut':qOut}) 
     jobs.append(proc) 
     proc.start() 
    for job in jobs: 
     job.join() 
    for i in range(len(params)): 
     print(qOut.get()) 
+0

谢谢,它是如此简单:) –

相关问题