pyinstrument を使って Python のプロファイリングをする¶
pyinstrumentは Python のプロファイリングツールの 1 つで、コードの実行時間を計測して可視化できる。この記事では、pyinstrument の使い方を紹介する。
install¶
使い方¶
CLI¶
CLI で使う場合は次のように使う。
-r html
を使うと HTML ファイルに出力することもできる。そのファイルを確認することで、どの処理に時間がかかっているかを視覚的に理解しやすい。各オプションは-h
, --help
で確認できる。
Python¶
Python のコード内で使う場合は次のように使う。
Python API も CLI と同様に HTML ファイルに出力できる。link
出力例¶
サンプルの HTML ファイルはこちらで確認できる。
関連リンク¶
IPython や WebAPI フレームワーク、Pytest 実行の中で pyinstrument を使う方法も公式ドキュメントで紹介されている。
実際に使ってみた感想¶
pyinstrument は Python のプロファイリングツールの中でも使いやすいツールの 1 つだと感じた。特に HTML ファイルに出力することで、どの処理に時間がかかっているかを視覚的に理解しやすい。CLI と Python API としても簡単に使えるので、ユースケースに応じて使い分けができる。類似のツールとしてpy-spy
があるが、pyinstrument の方が個人的に好みだった。py-spy も HTML 出力できるし、Rust で書かれているので速く、パフォーマンス影響も少ないが、プロファイル結果の分かりやすいさの点で pyinstrument の方が個人的には好みだ。 ただし、pyinstrument を使っているとメモリ周りの挙動で気になる点があり、一部のケースでパフォーマンス劣化や OOM が起こることがあった。そのため、必要に応じて他のプロファイリングツールと組み合わせて使うことが望ましい。pyintrument を利用する際は本番環境ではなく、開発環境での利用を推奨する。