大きなオブジェクトがロードされたときの 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 を使用)