我有一个 Python 扩展模块,它使用 SWIG 作为包装器,我尝试用 Pickle 序列化它,但我失败了 =)
- 如果有人有可以 pickle 的 SWIG 扩展源,我很乐意看到它!
- 看来我应该实现
__reduce_ex__
我的 C++ 代码中的方法。有没有人有__reduce_ex__
的例子? There is similar Stackoverflow question但它省略了manager_constructor
规范和实现。
最佳答案
似乎我找到了适合我的简单解决方案:
假设我们有类 C
是用 SWIG 生成的,然后我们用
class PickalableC(C, PickalableSWIG):
def __init__(self, *args):
self.args = args
C.__init__(self)
PickalableSWIG
是
class PickalableSWIG:
def __setstate__(self, state):
self.__init__(*state['args'])
def __getstate__(self):
return {'args': self.args}
然后
pickle.loads(pickle.dumps(C()))
失败了,但是
pickle.loads(pickle.dumps(PickalableC()))
成功 =)
关于python - 如何让我的 SWIG 扩展模块与 Pickle 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310053/