Pythonでメモリ使用量を分析する

memory_profiler を利用する

  • インストール
$ pip install -U memory_profiler

memory_profiler の使い方は line_profiler と似ている。

@profile デコレータを利用して、プロファイリングしたい関数を装飾することで、行ごとのメモリ使用量を測ることができる。

stream パラメータを指定して、結果をファイルに出力することもできる。

f = open('output.txt', 'w+')
@profile(stream=f)

時系列の推移を見たい場合は、mprof コマンドを利用する。

mprof run で実行すれば、メモリ使用量が .dat ファイルに記録される。

mprof run my_script.py

そして、mprof plot コマンドで matplotlib を使って、ファイルに記録されたメモリ使用量を可視化できる。

mprof plot -o example.png

memray を利用する

memory_profiler と同じで、pip でインストールする。

memray run コマンドで実行する。マルチプロセスの場合は、--follow-fork を指定する必要がある。

memray run --follow-fork example.py

flamegraph サブコマンドでフレームグラフを含むHTMLファイルを生成する。

memray flamegraph memray-example.py.11869.bin

Tags:

Updated: