我有兴趣找出加载大对象时python堆的总大小的增加。heapy 似乎是我需要的,但我不明白结果。
我有一个 350 MB 的 pickle 文件,里面有一个 pandas DataFrame
,其中包含大约 250 万个条目。当我加载文件并随后使用 heapy 检查堆时,它报告只有大约 8 MB 的对象已添加到堆中。
import guppy
h = guppy.hpy()
h.setrelheap()
df = pickle.load(open('test-df.pickle'))
h.heap()
这给出了以下输出:
Partition of a set of 95278 objects. Total size = 8694448 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 44700 47 4445944 51 4445944 51 str
1 25595 27 1056560 12 5502504 63 tuple
2 6935 7 499320 6 6001824 69 types.CodeType
...
让我困惑的是Total size
of 8694448 bytes
。这只是 8 MB。
为什么不能Total size
反映整体的大小DataFrame
df
?
(使用 python 2.7.3、heapy 0.1.10、Linux 3.2.0-48-generic-pae (Ubuntu)、i686)