gpt4 book ai didi

python - 加载大对象后测量堆大小的增加

转载 作者:太空狗 更新时间:2023-10-30 00:19:43 25 4
gpt4 key购买 nike

我很想知道加载大对象时 python 堆总大小的增加情况。 heapy 似乎是我需要的,但我不明白结果。

我有一个 350 MB 的 pickle 文件,其中包含一个 pandas 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 字节总大小。那只是 8 MB。

为什么 Total size 不反射(reflect)整个 DataFrame df 的大小?

(使用 python 2.7.3,heapy 0.1.10,Linux 3.2.0-48-generic-pae(Ubuntu),i686)

最佳答案

你可以试试 pympler ,我上次检查时对我有用。如果您只对总内存增加感兴趣而不是对特定类感兴趣,您可以通过特定于操作系统的调用来获取已使用的总内存。例如,在基于 unix 的操作系统上,您可以在加载对象之前和之后执行类似以下操作以获取差异。

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

关于python - 加载大对象后测量堆大小的增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com