2014-04-28 4 views
1

두 개의 서로 다른 두 개의 디렉터리에 동일한 파일의 체크섬을 생성하려고하며 다중 처리 .Process()를 사용하여 두 파일의 체크섬을 순차적으로 실행하지 않고 동시에 실행합니다.함수 파이썬 멀티 프로세싱의 값을 반환합니다. 프로세스

<Process(Process-1, stopped)> 
<Process(Process-2, stopped)> 

이 체크섬 문자열 목록이어야한다 : 나는 체크섬 생성 기능에 multiprocessing.Process() 객체를 실행할 때

그러나,이 반환 값을 얻을.

return chksum_list 

아주 기본적이고 순차적으로 실행할 때 프로그램이 잘 작동 :

를 생성하는 함수에서 return 문이다.

multiprocessing.Process() 객체를 통해 처리되는 함수의 반환 값을 어떻게 검색합니까?

감사합니다.

답변

4

docs은이 주제에서 비교적 좋습니다.

파이프

당신은 프로세스 개체에 파이프를 통해 통신 할 수

; 워드 프로세서

:

from multiprocessing import Process, Pipe 

def f(conn): 
    conn.send([42, None, 'hello']) 
    conn.close() 

if __name__ == '__main__': 
    parent_conn, child_conn = Pipe() 
    p = Process(target=f, args=(child_conn,)) 
    p.start() 
    print parent_conn.recv() # prints "[42, None, 'hello']" 
    p.join() 

풀 &지도 또는

당신은 Pool 프로세스로 사용할 수 있습니다

pool = Pool(processes=4) 
returnvals = pool.map(f, range(10)) 

f가 작동됩니다 기능입니다 각 구성원은 range(10)입니다. 마찬가지로 입력을 포함하는 목록을 프로세스에 전달할 수 있습니다. f이 체크섬 기능 동안 특정 경우

returnvals = pool.map(f, [input_to_process_1, input_to_process_2])  

, input_to_process_1/2, 당신은에 체크섬을하고있는 파일에 대한 경로가 될 수 있습니다.

+0

예 문서를 검토했지만 Process 개체에서 처리중인 함수에서 반환 값을 가져 오는 것에 대한 정보를 찾을 수 없습니다. 해당 함수의 반환 값 (문자열 목록)을 변수에 할당하려고합니다. 그런 다음 주 기능 내에서 다른 작업을 완료하기 위해 반복됩니다. 지금까지 도와 주셔서 감사합니다. – user3582642

관련 문제