こんにちは。
Pythonでメモリ使用量を調査する方法について、今回はmemory_profilerについて調べたのでまとめます。
本家のサイト
インストール
$ pip install memory_profiler
使い方
使い方としては、めちゃめちゃ簡単で、確認したい処理に @profile
のデコレーターを使って記述します。今回は、PandasやNumpyを使っていますが、ここはなんでも大丈夫です。
import numpy as np import pandas as pd from memory_profiler import profile @profile def main(): ## サンプルでデータを作っているので、ここの処理はなんでも良い print("Create Sample Data") df = pd.DataFrame(np.zeros((10000, 10000))) print("Show Sample Data") print(df) if __name__ == '__main__': main()
これを、「 sample_memory_profiler.py
」として保存します。
すると、以下のような感じで、どこでどのくらいメモリを使用しているかを見ることができます。
$ python sample_memory_profiler.py --------------中略-------------- [10000 rows x 10000 columns] Filename: sample_memory_profiler.py Line # Mem usage Increment Line Contents ================================================ 5 87.0 MiB 87.0 MiB @profile 6 def main(): 7 87.0 MiB 0.0 MiB print("Create Sample Data") 8 87.3 MiB 0.3 MiB df = pd.DataFrame(np.zeros((10000, 10000))) 9 10 87.3 MiB 0.0 MiB print("Show Sample Data") 11 151.5 MiB 64.3 MiB print(df)
一行ずつ表示してくれるのが嬉しいですね。
matplotlibと併用する
matplotlibはPythonの可視化ツールですが、memory_profilerと連携して使うことで、可視化を行うことができます。
インストール
$ pip install matplotlib
実行する
mprof
というコマンドを使うと、実行することができます。
$ mprof run sample_memory_profiler.py
実行すると、以下のようなグラフで可視化されます。
便利ですね。
今日はこの辺で。