多处理的池函数选择传递给它的所有参数,然后在池中重新创建它们。
在我的例子中,我有一些不能被捕捉的参数(它们是c ++对象),并且它们需要花费大量时间来创建。
有没有办法可以将这些参数传递到池中而不必将它们序列化?
答案 0 :(得分: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)