4

私のコードは継続的にメモリを割り当てます(毎秒約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
4

1 に答える 1

3

この質問はすでにここで回答されているようです:Pythonメモリプロファイラー

多分これはあなたを助けることができます:http://pypi.python.org/pypi/memory_profiler

ドキュメントから、オプションをpythonインタープリターに渡すコードを実行して-m memory_profiler、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 に答える