ablog

不器用で落着きのない技術者のメモ

Python スクリプトを cProfile でプロファイリングする

cProfile とは

cProfile と profile は 決定論的プロファイリング (deterministic profiling) を行います。 プロファイル (profile) とは、プログラムの各部分がどれだけ頻繁に呼ばれたか、そして実行にどれだけ時間がかかったかという統計情報です。 pstats モジュールを使ってこの統計情報をフォーマットし表示することができます。

Python 標準ライブラリは同じインターフェイスを提供するプロファイラの実装を3つ提供しています。

  • cProfile はほとんどのユーザーに推奨されるモジュールです。 C言語で書かれた拡張モジュールで、オーバーヘッドが少ないため長時間実行されるプログラムのプロファイルに適しています。 Brett Rosen と Ted Czotter によって提供された lsprof に基づいています。バージョン 2.5 で追加.
26.4. Python プロファイラ — Python 2.7.15 ドキュメント

使い方

$ python -m cProfile -s cumulative foo.py
  • sオプションでソート順に指定できる引数は以下の通り
引数 意味
calls call count
cumulative cumulative time
cumtime cumulative time
file file name
filename file name
module file name
ncalls call count
pcalls primitive call count
line line number
name function name
nfl name/file/line
stdname standard name
time internal time
tottime internal time