2014-01-23 2 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

을 참조하십시오. 또한 일반적으로 작업 단위를 제곱하는 것보다 훨씬 크게하고 싶습니다. number :-) – 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

감사합니다. 그것은 매우 간단했습니다 :) –

관련 문제