pickle error assert id(obj) not in self.memo

2019-10-30 11:59发布

我使用的莳萝 (泡菜的高级版本)现在。 我想我的序列化对象,但我得到这个错误:

/usr/lib/python2.7/pickle.pyc in memoize(self, obj)
    242         if self.fast:
    243             return
--> 244         assert id(obj) not in self.memo
    245         memo_len = len(self.memo)
    246         self.write(self.put(memo_len))

谁能告诉我,做这个错误,或者我怎么能解决这个可能性?

Answer 1:

没有你发布你的代码的简化版本,它很难帮助。 然而, dill有一些内置的检测方法。 看看dill.detect

>>> # trace dill's pickling of objects, by printing out step by step trace 
>>> dill.detect.trace(True)

或对象检查。

>>> dill.detect.badobjects(yourfailingobject, depth=1)

还有dill.detect.badtypes等。

或者,你可以跟踪下来对象如何彼此相关,与dill.detect.parentdill.detect.childrendill.detect.reference ,等等。

这是一个使用的示例dill (加objgraph用于可视化)来跟踪循环引用。 https://github.com/uqfoundation/dill/issues/58

还有所有的大名单dill不知道如何连载dill._objects -至少Python标准库的第15个部分,再加上一些其他。



文章来源: pickle error assert id(obj) not in self.memo