7

大きなオブジェクトがロードされたときの python のヒープの合計サイズの増加を調べることに興味があります。heapy が必要なようですが、結果がわかりません。

パンダを含む 350 MB の pickle ファイルがあり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です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 を使用)

4

2 に答える 2