有人可以帮助我了解如何以及为什么在例如pickle
和dill
?
我的用例如下。 我想转储一个对象,该对象的实例是从某些外部库类通过多次继承派生的。此外,该类的一个属性是字典,它具有作为值的功能。 不幸的是,该函数是在类的范围内定义的。
def class:
def f():
def that_function():
# do someth
# back within f() scope
self.mydata{'foo':that_function}
有没有评论关于外部依赖项的鲁棒性?
或者我可以考虑进行序列化的任何其他库?
答案 0 :(得分:1)
我是dill
的作者。如果您要腌制的所有对象都可以被pickle
腌制,则应使用pickle.dump
。如果pickle
无法拾取一个或多个对象,请使用dill
。请参阅pickle
文档以获取可以用pickle
腌制的内容。 dill
可以腌制大多数python对象,但有一些例外。
如果您想考虑替代dill
,可以使用cloudpickle
,它的功能与dill
类似(并且在使用{{1时与dill
非常相似) }}。
还有其他序列化库,例如dill.settings['recurse'] = True
,但是它们序列化的对象实际上比pickle少,因此您不必选择它们来序列化用户构建的类。