pickle 和 python 数据结构
pickle and python data structure
我有一些数据存储在内存中的树中,我经常使用 pickle 将树存储到磁盘中。
最近发现程序占用内存大,查看了保存的pickle文件,大约600M左右,然后又写了一个小测试程序,把树加载回内存,发现需要将近10倍的内存( 5G) 比磁盘上的大小,这正常吗?避免这种情况的最佳方法是什么?
不,这不正常。我怀疑你的树比你想象的要大。编写一些代码来遍历它并将所有使用的 space 加起来(并计算节点数)。
见memory size of Python data structure
另外你到底想问什么?磁盘上600M的数据结构在内存中有5G,你是不是很惊讶。这并不特别令人惊讶。 Pickle 压缩数据,因此您希望它在磁盘上更小。它小了 10 倍(大约),这非常好。
如果您对自己数据的大小感到惊讶,那就另当别论了。
我有一些数据存储在内存中的树中,我经常使用 pickle 将树存储到磁盘中。 最近发现程序占用内存大,查看了保存的pickle文件,大约600M左右,然后又写了一个小测试程序,把树加载回内存,发现需要将近10倍的内存( 5G) 比磁盘上的大小,这正常吗?避免这种情况的最佳方法是什么?
不,这不正常。我怀疑你的树比你想象的要大。编写一些代码来遍历它并将所有使用的 space 加起来(并计算节点数)。
见memory size of Python data structure
另外你到底想问什么?磁盘上600M的数据结构在内存中有5G,你是不是很惊讶。这并不特别令人惊讶。 Pickle 压缩数据,因此您希望它在磁盘上更小。它小了 10 倍(大约),这非常好。
如果您对自己数据的大小感到惊讶,那就另当别论了。