我正在使用dill(泡菜的高级版本)。我想序列化我的对象,但是我收到了这个错误:
/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))
有人可以告诉我发生此错误的可能性或我该如何解决这个问题?
答案 0 :(得分:2)
如果您没有发布代码的简化版本,则很难提供帮助。但是,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.parent
,dill.detect.children
,dill.detect.reference
等跟踪对象之间的相互关系。
以下是使用dill
(加objgraph
进行可视化)来跟踪循环引用的示例。 https://github.com/uqfoundation/dill/issues/58
还有一个很大的列表,dill
不知道如何在dill._objects
中序列化 - 至少是python标准库的前15个部分,还有其他部分。