profile.proto形式のプロファイリングデータを可視化・分析するコマンドラインツール兼Webツール。
joerick/pyinstrument
Pythonコードのどこで時間がかかっているかを、コンソールやHTMLなどで確認できるコールスタックプロファイラー。
- スター
- 8,026
- フォーク
- 302
- 未解決の Issue
- 32
- 最終コミット
- 5 日前
これは何?
PyinstrumentはPython向けの統計型プロファイラーです。プログラムの実行中にコールスタックをサンプリングし、経過時間の大部分を占める関数をレポートするため、コードの中で最も遅い部分に絞って最適化できます。
コマンドラインからの実行(`pyinstrument script.py`)、`with`ブロックやデコレーターを使って特定のコードをプロファイルするPython APIを備えています。また、コンソールテキスト、インタラクティブHTML、JSON、pstats、speedscopeファイル向けの出力形式を利用できます。asyncコードにも対応しており、コルーチン内で待機している時間を表示します。さらに、Django middleware、IPython/Jupyterのマジックコマンド、FastAPI、aiohttpのサンプルとの統合も含まれています。
デフォルトではライブラリコードのフレームを隠し、アプリケーションコードを強調表示するため、自分で制御できる部分に注目しやすくなります。
主な機能
- 01低オーバーヘッドでコールスタックをサンプリングし、関数ごとの所要時間をレポートします。
- 02コンソール、インタラクティブHTML、JSON、pstats、speedscope形式で出力できます。
- 03asyncに対応したプロファイリングにより、待機時間を適切な呼び出しに割り当てます。
- 04コマンドラインからスクリプト全体を、または`with`文やデコレーターで特定のコードブロックをプロファイルできます。
- 05Django middlewareおよびIPython/Jupyterのマジックコマンドと統合できます。
- 06デフォルトでライブラリのフレームを隠し、アプリケーションコードを見つけやすくします。
ユースケース
- 実行に時間がかかるPythonスクリプトの遅い関数を特定する。
- Djangoのviewやmiddlewareをプロファイルし、リクエスト時間の内訳を確認する。
- タスクがI/O待ちに時間を費やす遅いasyncコードを調査する。
- Jupyter上でノートブックのセルのパフォーマンスを直接確認する。
クイックスタート
- 1
PyPIからpyinstrumentをインストールする
pip install pyinstrument - 2
コマンドラインからスクリプトをプロファイルする
pyinstrument script.py
使う前に知っておきたいこと
- READMEには、タイミング関連のシステムコールが遅いため、Dockerコンテナ内でプロファイリングすると異常な結果になることがあると記載されています。
- pyinstrumentで実行したスクリプト内のクラスをpickle化すると、`__main__`のシリアライズエラーが発生する場合があります。
収録されている特集
トピック
よくある質問
- pyinstrument とは?
- Pythonコードのどこで時間がかかっているかを、コンソールやHTMLなどで確認できるコールスタックプロファイラー。 PyinstrumentはPython向けの統計型プロファイラーです。プログラムの実行中にコールスタックをサンプリングし、経過時間の大部分を占める関数をレポートするため、コードの中で最も遅い部分に絞って最適化できます。
- pyinstrument は無料で使えますか?ライセンスは?
- pyinstrument は BSD-3-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pyinstrument は今もメンテナンスされていますか?
- 活発にメンテナンス中。pyinstrument の最終コミットは 2026年11月1日 です。
- pyinstrument は何に使えますか?
- 実行に時間がかかるPythonスクリプトの遅い関数を特定する。 Djangoのviewやmiddlewareをプロファイルし、リクエスト時間の内訳を確認する。 タスクがI/O待ちに時間を費やす遅いasyncコードを調査する。 Jupyter上でノートブックのセルのパフォーマンスを直接確認する。
- pyinstrument のインストール方法は?
- PyPIからpyinstrumentをインストールする: pip install pyinstrument コマンドラインからスクリプトをプロファイルする: pyinstrument script.py
- pyinstrument はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/joerick/pyinstrument
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
リクエストやSQLクエリ、コードブロックを記録し、遅い箇所を特定できるDjango向けのリアルタイムプロファイラー兼インスペクションUI。
Intel Processor Traceでプロセス内のすべての関数呼び出しを記録し、インタラクティブなタイムラインに表示するLinuxプロファイラーです。
コードの変更やプロセスの再起動をせず、実行中のPythonプログラムにアタッチできるサンプリングプロファイラー。
LaravelにPHP Debug Barを統合し、クエリ、ルート、ビュー、イベント、ログなどを表示する開発用ツールバーを追加するパッケージです。
組み込みダッシュボードで、Flaskのエンドポイント性能、リクエストのプロファイリング、外れ値、例外を自動監視する拡張機能。