我有兴趣了解大对象加载时python堆的总大小的增加。 heapy似乎是我需要的,但我不明白结果。在加载大对象后测量堆大小的增加
我有一个350 MB的泡菜文件,里面有一个熊猫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
...
什么混淆我是8694448 bytes
的Total size
。这只是8 MB。
为什么没有Total size
反映整个尺寸DataFrame
df
?
(使用Python 2.7.3,heapy 0.1.10,Linux的3.2.0-48 - 仿制PAE(Ubuntu的),为i686)
感谢您的回答。我还没有开始尝试使用益普乐 - 在接下来的几天内会试用它。操作系统对内存消耗的看法并不是我所感兴趣的,所以getrusage()对我来说无济于事。 – rodion