Pythonでメモリ使用量とか調べるときに便利なmemory_profiler。
loggerを使っているので、結果をそっちで表示したいなと思ったのでその備忘録。
memory-profilerとは
各行のメモリ使用量とかを計測してくれるライブラリ
インストール
$ pip install memory-profiler
サンプル
使い方はとしては、計測したい関数に@profile
をつけるだけ!
from memory_profiler import profile @profile def do_function(): print "Execute do something.." def main(): do_function() if __name__ == '__main__': main()
結果
こんな感じで表示してくれる。
$ python sample.py Execute do something.. Filename: sample.py Line # Mem usage Increment Line Contents ================================================ 4 9.1 MiB 9.1 MiB @profile 5 def do_function(): 6 9.1 MiB 0.0 MiB print "Execute do something.."
memory_profilerの結果をloggerに渡す
proflieデコレータ、関数的にも使えて、streamを渡せるっぽい。
ただ、loggerからstreamをとってくるのは大変なので、
io.StringIO
に一時的に書き出して、loggerで出力してみた。
サンプル
import logging import io from memory_profiler import profile logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) def do_function(): logger.info("Execute do something..") def main(): with io.StringIO() as f: profile(func=do_function, stream=f)() logger.info(f.getvalue()) if __name__ == '__main__': main()
結果
こんな感じにloggerでも表示が!
python sample.py INFO:__main__:Execute do something.. INFO:__main__:Filename: sample.py Line # Mem usage Increment Line Contents ================================================ 9 9.2 MiB 9.2 MiB def do_function(): 10 9.2 MiB 0.0 MiB logger.info("Execute do something..")
以上!!
参考になる書籍
- 作者: 関根裕紀,新井正貴
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2019/09/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2018/06/09
- メディア: 単行本
- この商品を含むブログを見る