使用pickle

时间:2018-06-03 15:13:32

标签: python pickle

使用pickle时,我得到间歇性的MemoryError。它似乎与被腌制的数据无关 - 例如,我可以稍微重新排列调用酸洗功能的代码并且错误消失。有没有办法调试实际发生的事情?大小不能成为问题 - 腌制对象大约是160MB。我试图估计被腌制的数据大小,大约是400MB。

这是我的酸洗功能(在我的SrcData类上实现):

def toPickle(self, fileOutput=None):
    if fileOutput is None:
        with open(SrcData.fileSerializedPickle, 'wb') as f:
           pickle.dump(self, f)
    else:
        with open(fileOutput, 'wb') as f:
           pickle.dump(self, f)

我尝试过JSON,但是我在类SrcData中处理的对象不是JSON可序列化的。还有其他更强大的方法来序列化数据吗?类SrcData用于存储有关源代码的解析信息 - 解析是昂贵的,所以我想从pickle加载它来运行查询,而不是每次运行我的Python脚本时都解析它。

编辑: 现在我切换到莳萝 - 就序列化而言要慢得多,但至少更可靠。至于加载序列化对象 - 莳萝执行与pickle大致相同。

0 个答案:

没有答案