cProfile占用大量内存

我试图在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())
    

要回复问题请先登录注册