延长泡菜
extpickle的Python项目详细描述
扩展原始Pickler class 以便能够pickle一些其他不受支持的类型。 重点是要快速,并通过管道/插座进行通信 另一端是同一个python版本,因此我们不太关心与其他版本的兼容性。
一个类似的项目是dill,不过规模要大得多。
此项目已注册on PyPI,可以通过
pip install extpickle
有关一些用法示例,请参见the test code
在基类Pickler上,它添加了对:
- types.FunctionType、types.CodeType和单元格类型。 也就是说,你可以泡菜和函数。 注意,这将对字节码使用marshal模块,因此这在不同的Python版本中是不可移植的
- 模块。这是通过引用它的名字来完成的。 注意,is对__main__有一些额外的处理,允许它是不同的模块
- mod.__dict__其中mod是一个模块,也存储为对该模块的引用,而不是dict的副本
- (Python 2)buffer
- numpy.ndarray。 基类也支持这一点,但我们的实现要快得多。 实际上,这有点奇怪,因为默认实现也应该同样快,但不是。 我们的实现基本上只使用fromstring/tostring
- 新风格的课程。 基类将尝试在模块中查找它们。如果在此类命名空间中找不到它,则此操作将失败。 如果失败,我们的实现将实际存储信息来构造一个新类, 也就是说,名字,碱基和它的名言
- (Python2)旧式类。这与新样式类的行为相同。
这是在TaskSystem project中使用的。