哪个python库序列化设计不良的类

时间:2018-08-22 16:45:31

标签: python serialization pickle dill

有人可以帮助我了解如何以及为什么在例如pickledill

我的用例如下。 我想转储一个对象,该对象的实例是从某些外部库类通过多次继承派生的。此外,该类的一个属性是字典,它具有作为值的功能。 不幸的是,该函数是在类的范围内定义的。

def class:
    def f():
      def that_function():
        # do someth
      # back within f() scope
      self.mydata{'foo':that_function}

有没有评论关于外部依赖项的鲁棒性?

或者我可以考虑进行序列化的任何其他库?

1 个答案:

答案 0 :(得分:1)

我是dill的作者。如果您要腌制的所有对象都可以被pickle腌制,则应使用pickle.dump。如果pickle无法拾取一个或多个对象,请使用dill。请参阅pickle文档以获取可以用pickle腌制的内容。 dill可以腌制大多数python对象,但有一些例外。

如果您想考虑替代dill,可以使用cloudpickle,它的功能与dill类似(并且在使用{{1时与dill非常相似) }}。

还有其他序列化库,例如dill.settings['recurse'] = True,但是它们序列化的对象实际上比pickle少,因此您不必选择它们来序列化用户构建的类。