python使用带有loky和lambda函数的procees映射,pickle问题

2024-06-16 09:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试使用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里面?为什么它会试图腌制自己


Tags: 对象lambda代码selfmapstringparam进程