python – 如何使我的SWIG扩展模块与Pickle工作?

我有一个 Python的扩展模块,使用SWIG作为包装器,我尝试用Pickle序列化它,我失败=) @H_301_2@>如果任何人有一个可以腌制的SWIG扩展的来源,会喜欢看到它!
看来我应该在C代码中实现__reduce_ex__方法.有没有人有__reduce_ex__的例子? There is similar Stackoverflow question,但省略了manager_constructor规范和实现.

解决方法

好像我发现了适用于我的简单解决方案: @H_301_2@所以我们来说说我们已经用SWIG生成了C类,然后我们把它包装起来

class PickalableC(C,PickalableSWIG):

    def __init__(self,*args):
        self.args = args
        C.__init__(self)
@H_301_2@其中PickalableSWIG是

class PickalableSWIG:

    def __setstate__(self,state):
        self.__init__(*state['args'])

    def __getstate__(self):
        return {'args': self.args}
@H_301_2@然后

pickle.loads(pickle.dumps(C()))
@H_301_2@失败了,但是

pickle.loads(pickle.dumps(PickalableC()))
@H_301_2@成功=)

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...