gpt4 book ai didi

python多处理pickle协议(protocol)

转载 作者:太空狗 更新时间:2023-10-29 17:32:29 24 4
gpt4 key购买 nike

我正在使用 Python 多处理模块将对象放入队列中,并让多个工作人员处理它们。我的第一个问题是让绑定(bind)的实例方法进行 pickle,我一直在努力,但现在我遇到了一个单独的问题,这是因为对象正在使用 __slots__

当 mp 模块开始 pickle 对象时,它似乎在使用旧的 ascii pickle 协议(protocol),无法处理 __slots__。较新的协议(protocol)确实处理了这个问题,但我不确定如何让 mp 模块使用这个协议(protocol)。

谁有这方面的经验?

最佳答案

如果无法更改多处理包使用的 pickle 协议(protocol),则为您的对象定义 __getstate____setstate__:

import pickle

class Foo(object):
__slots__ = ['this', 'that', 'other']

def __init__(self):
self.this = 1
self.that = 2
self.other = 3

def __getstate__(self):
return dict((name, getattr(self, name))
for name in self.__slots__)

def __setstate__(self, state):
for name, value in state.items():
setattr(self, name, value)

pickle.dumps(Foo(), protocol=0)

关于python多处理pickle协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com