我很想知道加载大对象时python堆总大小的增加.很多似乎是我需要的,但我不明白结果.
我有一个350 MB的pickle文件DataFrame,里面有一个pandas ,其中包含大约250万个条目.当我加载文件并在之后使用heapy检查堆时,它会报告只有大约8 MB的对象已添加到堆中.
import guppy
h = guppy.hpy()
h.setrelheap()
df = pickle.load(open('test-df.pickle'))
h.heap()
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出:
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
...
Run Code Online (Sandbox Code Playgroud)
是什么让我困惑的是Total size的8694448 bytes.那只是8 MB.
为什么不Total size反映整体的大小 …
我刚刚安装了孔雀鱼0.1.10.然后输入Ipython 2.1.0
from guppy import hpy
hp = hpy()
Run Code Online (Sandbox Code Playgroud)
使控制台崩溃,即Windows告诉我,python.exe刚刚崩溃.有没有解决方法?还是一个堆积的替代品?