dill
是一个很好的工具,用于pickle大多数Python对象,我在ipythonparallel中使用它来序列化计算。我一直在研究类定义。我得到的一个错误解释如下。在
在尝试序列化类定义时,我一直从dill
获取{
class MyClassEmpty(object):
pass
class MyClassInit(object):
def __init__(self):
super(MyClassInit).__init__()
dill.dumps(MyClassEmpty) # returns: '\x80\x02cdill.dill\n_create_type\nq\x00(cdill.dill\n_load_type\nq\x01U\x08TypeTypeq\x02\x85q\x03Rq\x04U\x0cMyClassEmptyq\x05h\x01U\nObjectTypeq\x06\x85q\x07Rq\x08\x85q\t}q\n(U\n__module__q\x0bU\x08__main__q\x0cU\x07__doc__q\rNutq\x0eRq\x0f.'
dill.dumps(MyClassInit) # AssertionError at line 244 of MyClassEmpty (assert id(obj) not in self.memo)
我使用dill0.2.2使用python2.7.6。在
我是
dill
的作者。应该解决super
问题请参阅:https://github.com/uqfoundation/dill/issues/26顺便说一句:
dill
在某些涉及类的情况下(主要是)punt到pickle
,并且pickle
抛出一个AssertionError
作为它可能引起的3-4个错误之一。为什么不只是一个PicklingError
我不知道…那可能更可取。在相关问题 更多 >
编程相关推荐