我想在此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__':
块下调用代码,但我想知道是否可以在代码中进行最小可能的更改来完成此操作。