2017-05-22 6 views
0

다중 처리 풀 기능은 전달 된 모든 매개 변수를 피클링 한 다음 풀에서 재 작성합니다.일련화할 수없는 매개 변수가있는 다중 처리 풀

필자는 필자가 선택할 수없는 매개 변수 (예 : C++ 개체)를 가지고 있으며 만들 때 많은 시간이 필요합니다.

이러한 매개 변수를 직렬화 할 필요없이 풀에 전달할 수있는 방법이 있습니까?

답변

0

multiprocessing.Pool은 새 작업자 프로세스가 생성 될 때마다 실행되는 초기화 함수를 전달할 수 있습니다.

이 함수를 사용하여 C++ 객체를 초기화 할 수 있습니다. 각 프로세스에는 고유 한 사본이 있습니다.

from multiprocessing import Pool 

parameters = None 

def initializer(): 
    global parameters 

    parameters = initialize_cpluplus_objects() 

def function(): 
    parameters.do_something() 


pool = Pool(initializer=initializer_function) 
pool.apply_async(function) 
관련 문제