gpt4 book ai didi

python - cProfile 占用大量内存

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:07 26 4
gpt4 key购买 nike

我正在尝试用 python 分析我的项目,但内存不足。

我的项目本身相当占用内存,但在 cProfile 下运行时,即使是半大小的运行也会因“MemoryError”而终止。

进行较小的运行并不是一个好的选择,因为我们怀疑运行时间是超线性缩放的,并且我们正在尝试发现哪些函数在大型运行期间占主导地位。

为什么 cProfile 占用这么多内存?我可以让它花更少的时间吗?这正常吗?

最佳答案

更新:由于 cProfile 内置于当前版本的 Python(_lsprof 扩展)中,因此它应该使用主分配器。如果这对您不起作用,Python 2.7.1 有一个 --with-valgrind 编译器选项,它会导致它在运行时切换到使用 malloc()。这很好,因为它避免了使用抑制文件。您可以构建一个仅用于分析的版本,然后在 valgrind 下运行您的 Python 应用程序以查看分析器所做的所有分配以及使用自定义分配方案的任何 C 扩展。

(原始答案的其余部分如下):

也许尝试看看分配的去向。如果您的代码中有一个位置可以定期转储内存使用情况,则可以使用 guppy查看分配情况:

import lxml.html
from guppy import hpy

hp = hpy()
trees = {}
for i in range(10):
# do something
trees[i] = lxml.html.fromstring("<html>")
print hp.heap()

# examine allocations for specific objects you suspect
print hp.iso(*trees.values())

关于python - cProfile 占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5266699/

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