莳萝与Python的pickle模块有何不同?

时间:2019-10-01 22:36:20

标签: python python-3.x pickle dill

我的Python3代码中有一个大对象,当尝试用pickle模块腌制时,会引发以下错误:

TypeError: cannot serialize '_io.BufferedReader' object

但是,dill.dump()dill.load()能够无缝保存和恢复对象。

  1. 是什么原因导致pickle模块出现问题?
  2. 现在dill保存并重建对象没有任何错误,是否有任何方法可以验证用dill进行的酸洗和酸洗是否顺利?
  3. pickle失败但dill成功的可能性如何?

1 个答案:

答案 0 :(得分:1)

我是dill的作者。

1)最简单的方法是查看以下文件:https://github.com/uqfoundation/dill/blob/master/dill/_objects.py,其中列出了pickle可以序列化的内容和dill可以序列化的内容。

2)您可以尝试dill.copydill.checkdill.pickles检查不同级别的酸洗和不酸洗。

3)dill建立在pickle的基础上,并通过注册新的序列化函数对其进行了扩充。