无法腌制本地对象

时间:2018-04-06 10:15:59

标签: python multithreading parallel-processing python-multiprocessing pathos

我想在此code中使用多进程包。 我试图调用函数create_new_population并将数据分发给8个处理器,但是当我这样做时,我发现了pickle错误。

通常函数会像这样运行:self.create_new_population(self.pop_size)

我尝试分发这样的作品:

f= self.create_new_population
pop = self.pop_size/8
self.current_generation = [pool.apply_async(f, pop) for _ in range(8)]

我得到 Can't pickle local object 'exhaust.__init__.<locals>.tour_select'
PermissionError: [WinError 5] Access is denied

我仔细阅读this thread并尝试使用an approach from Steven Bethard绕过错误,以允许通过copyreg进行方法pickle / unpickling:

def _pickle_method(method)
def _unpickle_method(func_name, obj, cls)

我也尝试使用pathos包而没有任何运气 我知道应该在<if __name__ == '__main__':块下调用代码,但我想知道是否可以在代码中进行最小可能的更改来完成此操作。

0 个答案:

没有答案