什么是引发PicklingError的意思?

时间:2016-04-26 08:49:39

标签: python-3.x multiprocessing pickle

Hy那里! 我是python 3的新手。 我正在使用pvmomi模块从我的服务器获取vm的字典。当我尝试运行我的文件,多处理,我得到以下错误: 的

_pickle.PicklingError:无法pickle:pyVmomi.VmomiSupport上的属性查找vim.VirtualMachine失败

这是什么意思?

以下是我的代码的一部分:

def login(vm):
    #do something

if __name__=='__main__':
    cpu = mp.cpu_count()
    workers = mp.Pool(cpu)
    workers.map(login,range(1))
    for vm in vmDict:
        login(vm)

我最大的问题来自for循环。我需要这个循环来为每个dictitem完成工作,但只有一个池工作者完成这项工作。现在我已经将我的代码配置到下面,它引发了PicklingError。 感谢帮助。它让我发疯了!

1 个答案:

答案 0 :(得分:1)

stdlib pickle(.py)模块导入内置的C编码_pickle模块。 pickle模块可以序列化大多数Python对象,并用于在进程之间传输Python对象。特别是,pickle由多处理(也许是pyvmomi)使用。用户定义的类有时会定义特殊的方法(我相信 reduce reducex )来帮助完成pickle和unpickle过程。

异常消息表明属性查找失败。也许pyVmomi对象没有正确配置为pickle。您可以查看模块文档,看看它是否说明了泡菜支持。