首先,我并不期待解决方案,只是希望得到一些关于如何开始的指导。
我有一个带有嵌入式 Python 解释器的 C 程序。程序用作输入的 Python 脚本显然是指 C 定义的对象和函数。我现在想让其中一些对象可腌制。
pickle 文档描述了如何使用以下命令使扩展类型可pickle__reduce__
。但这是一个 Python 方法 - 我如何在底层 PyObject 中定义它?
相当肯定我误解了一些东西......
The pickle
模块有纯 Python 版本和 C 版本(称为cPickle
)。因此,__reduce__
方法需要可从 Python 代码调用。
因此,您需要提供一个__reduce__
C 对象中的条目PyMethodDef struct http://docs.python.org/c-api/structures.html#PyMethodDef并有适当的实施。
或者,您也可以使用以下函数注册一个 pickling 函数:copy_reg module http://docs.python.org/library/copy_reg.html。该模块最初的用途是为了更好地支持扩展模块;这源代码 http://hg.python.org/cpython/file/53fa224b95f4/Lib/copy_reg.py对于模块状态:
这仅适用于为 C 中定义的扩展类型添加 pickle 支持,不适用于用户定义类的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)