Pythonプロジェクトが大規模かつ複雑になるにつれて、理解はますます困難になります。プロジェクト全体を自分で書いたとしても、その動作を完全に理解することは不可能です。より深く理解するためには、コードのデバッグと分析が不可欠になります。 VizTracerは、Pythonコードの実行をトレースして視覚化することで、コードを理解するのに役立つツールです。ソースコードを変更することなく、VizTracerは関数のエントリポイントと終了ポイント、関数のパラメータと戻り値、そして任意の変数を記録し、直感的なGoogle ChromeフロントエンドインターフェースであるTrace-Viewerでデータを表示します。 以下はモンテカルロツリー検索を実行する例です。 モンテカルロ木探索の視覚化 各関数はタイムライン上にスタックとして記録・可視化されるため、プログラム実行中に何が起こっているかを確認できます。ズームインすることで、任意の時点の詳細情報を表示できます。 VizTracerの可視化を拡大 VizTracerは関数のパラメータと戻り値を自動的に記録することもできます。関数のエントリをクリックすると、詳細情報が表示されます。 VizTracerの詳細の表示 あるいは、全く新しいシグナルを作成し、それを使って変数を記録することもできます。例えば、以下は勾配降下法を実行する際のコスト値を示しています。 VizTracer勾配降下法 他の複雑なツールと比べて、VizTracerは非常に使いやすく、依存関係もありません。pipでインストールできます。
次のように入力してプログラムをトレースすることもできます (
VizTracer は作業ディレクトリに HTML レポートを生成し、Chrome ブラウザで開くことができます。 VizTracerには、フィルターなどの高度な機能も備わっています。フィルターを使用すると、追跡したくない関数を除外して、より明確なレポートを作成できます。例えば、ファイル内の関数のみをレポートに含めるには、以下の手順が必要です。
関数のパラメータと戻り値を記録します。
指定された正規表現に一致する変数を記録します。
ソース コードに小さな変更を加えることで、値やオブジェクトをログに記録するカスタム イベントなどの追加機能を取得できます。 VizTracerには、VizTracerのログファイルをデバッグできる仮想デバッガー(vdb)も含まれています。vdbを使えば実行中のコードをデバッグでき(pdbに非常に似ています)、コードフローを理解できます。さらに、発生したすべての事象を把握できるため、時間の巻き戻しもサポートされています。 一部のプロトタイプとは異なり、VizTracer はコアを純粋な C で実装しているため、オーバーヘッドが大幅に削減され、cProfile と同等のレベルになります。 VizTracerはオープンソースで、Apache 2.0ライセンスに基づいてリリースされており、すべての一般的なオペレーティングシステムプラットフォーム(Linux、macOS、Windows)をサポートしています。機能の詳細とソースコードはGitHubでご覧いただけます。 |