我有一些数据存储在内存中的树中,我经常使用pickle将树存储到磁盘中。 最近我注意到程序使用了大内存,然后我检查了保存的pickle文件,它大约是600M,然后我写了另一个小的测试程序将树加载回内存,我发现它需要将近10倍的内存( 5G)比磁盘上的大小,是正常的吗?什么是避免这种情况的最好方法?
答案 0 :(得分:2)
不,这不正常。我怀疑你的树比你想象的要大。编写一些代码来遍历它并添加所有使用的空间(并计算节点)。
请参阅memory size of Python data structure
你究竟在问什么?你是否感到惊讶的是,磁盘上的600M数据结构在内存中是5G。这并不特别令人惊讶。 Pickle压缩数据,因此您希望它在磁盘上更小。它小了10倍(大致),非常好。
如果您对自己的数据大小感到惊讶,那就是另一回事。