Python内存分配追踪

5

我的代码分配了连续内存(每秒约12kb)。运行8小时后,它占用了大量的内存!

因此,我想跟踪我的Python代码分配内存的时刻/代码行。

就像你可以使用处理过的代码行一样做些事情:

python -m trace --count -C ./tmp code.py

这会生成一个视图,你可以看到这行代码被执行了多少次。它的样子是这样的:

code.cover

1:     import sys
1:     import os
1534:  while 1:
1534:      print "foo"

我需要这个来进行内存分配。如果可能的话,类似以下方式:
1245 B    import sys
893 B     import os
17.46 KB  import somecode

你尝试使用过valgrind吗?特别是要检查随valgrind一起提供的massif工具。 - mmgp
可能是哪个Python内存分析器推荐?的重复问题。 - BartoszKP
1个回答

3

看起来这个问题已经在这里得到了解答:Python memory profiler

也许这个可以帮助你:http://pypi.python.org/pypi/memory_profiler

从文档中可以执行代码,将选项-m memory_profiler传递给python解释器加载memory_profiler模块,并打印出逐行分析的结果。如果文件名为example.py,则结果如下:

$ python -m memory_profiler example.py

输出结果如下:

Line #    Mem usage  Increment   Line Contents
==============================================
     3                           @profile
     4      5.97 MB    0.00 MB   def my_func():
     5     13.61 MB    7.64 MB       a = [1] * (10 ** 6)
     6    166.20 MB  152.59 MB       b = [2] * (2 * 10 ** 7)
     7     13.61 MB -152.59 MB       del b
     8     13.61 MB    0.00 MB       return a

这很有帮助,但我需要比较我的内存使用情况,因为有许多线程循环。所以当我退出代码时,我可以看到在运行时此函数分配了25 MB的内存。 - HappyHacking
你有注意到类似问题的链接吗?那里有更多的工具。 - Fernando Macedo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接