4

我的代码连续分配内存(每秒约 12kb)。运行时间为 8 小时,内存很大!

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

您可以通过以下方式处理已处理的代码行:

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

这会生成一个视图,您可以在其中查看该行的执行频率。看起来像:

代码覆盖

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
4

1 回答 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
于 2013-01-02T15:23:07.803 回答