我有興趣瞭解大對象加載時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