【发布时间】:2016-03-18 22:42:25
【问题描述】:
我有一些数据存储在内存中的树中,我经常使用 pickle 将树存储到磁盘中。 最近注意到这个程序使用了很大的内存,然后我检查了保存的pickle文件,大约600M,然后我又写了一个小测试程序将树加载回内存,我发现它会占用将近10倍的内存( 5G)比磁盘大小,这正常吗?避免这种情况的最佳方法是什么?
【问题讨论】:
我有一些数据存储在内存中的树中,我经常使用 pickle 将树存储到磁盘中。 最近注意到这个程序使用了很大的内存,然后我检查了保存的pickle文件,大约600M,然后我又写了一个小测试程序将树加载回内存,我发现它会占用将近10倍的内存( 5G)比磁盘大小,这正常吗?避免这种情况的最佳方法是什么?
【问题讨论】:
不,这不正常。我怀疑你的树比你想象的要大。编写一些代码来遍历它并添加所有使用的空间(并计算节点)。
见memory size of Python data structure
你到底在问什么?磁盘上的 600M 数据结构在内存中是 5G,您是否感到惊讶。这并不特别令人惊讶。 Pickle 压缩数据,因此您希望它在磁盘上更小。它小了 10 倍(大约),这非常好。
如果您对自己数据的大小感到惊讶,那就另当别论了。
【讨论】: