当我尝试使用loky library创建进程池时,我遇到了一个关于酸洗的小问题
我的代码类似于以下形式:
此代码在类方法中运行
param_1 # predefined
param_2 # predefined
pool.map(lambda x: some_other_method(x,param_1,param_2,self.string_param), some_array)
运行此代码会给我一个“TypeError:无法pickle thread.lock对象”错误
我假设这是因为self不是一个可拾取的对象
当我将这行更改为类似的内容时:
temp_variable = selef.string_param
pool.map(lambda x: some_other_method(x,param_1,param_2,temp_variable), some_array)
它起作用了
因此,在我看来,即使它不需要对整个self对象进行pickle,因为我只使用了字段“string_param”,它仍然会对它进行pickle
我的问题是,它是如何工作的?是不是因为它在一个lambda里面?为什么它会试图腌制自己
目前没有回答
相关问题 更多 >
编程相关推荐