例如,我想在此代码中使用多进程包。我试图调用该函数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
我已经仔细阅读了这个线程,并尝试使用Steven Bethard 的方法绕过错误,以允许通过 copyreg 进行方法酸洗/解酸:
def _pickle_method(method)
def _unpickle_method(func_name, obj, cls)
我也尝试使用pathos
package 没有任何运气。
我知道代码应该在if __name__ == '__main__':
块下调用,但我想知道这是否可以通过对代码的最小更改来完成。