6

例如,我想在此代码中使用多进程包。我试图调用该函数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)

我也尝试使用pathospackage 没有任何运气。
我知道代码应该在
if __name__ == '__main__':块下调用,但我想知道这是否可以通过对代码的最小更改来完成。

4

0 回答 0