当前位置: 首页 > news >正文

python多进程mulprocessing初始化传参进行pickle时不能序列化local局部变量

python多进程mulprocessing初始化传参进行pickle时不能序列化local局部变量

报错代码:

可以运行的代码:

点击查看代码
import multiprocessing'''
class calculate():"""AttributeError: Can't pickle local object 'calculate.run.<locals>.f'不能pickle当前局部变量"""def run(self):def f(x):return x*xp = multiprocessing.Pool()return p.map(f, [0, 1, 2])
'''def unwrap_self_f(arg, **kwargs):# print(arg)return calculate.f(*arg, **kwargs)class calculate():def f(self, x):return x*xdef run(self):p = multiprocessing.Pool()return p.map(unwrap_self_f, zip([self,]*3, [0, 1, 2]))if __name__ == '__main__':c1 = calculate()print(c1.run())