Visual Studio での Python コードのプロファイリング

Visual Studio では、コードをデバッグするときに Python アプリケーションのプロファイリング機能が提供されます。 Visual Studio デバッガーを使用すると、コードをステップ実行して変数の確認、プログラムの状態の分析、潜在的な問題の解決などを行うことができます。 Visual Studio プロファイル機能は、プログラムの実行時間に関する情報を提供します。 この情報を使用して、コードのパフォーマンスの問題を特定できます。

プロファイルは、CPython ベースのインタープリターを使用する場合、Python 3.9 以前で使用できます。

前提条件

Visual Studio for Mac は現在サポートされていません。 詳細については、「Visual Studio for Mac の現状」を参照してください。Windows、Mac、および Linux での Visual Studio Code は、利用可能な拡張機能を使用して Python コードを問題なく操作できます

CPython ベースのインタープリターでプロファイラーを使用する

Python アプリケーションをプロファイリングすると、Visual Studio によって、プロセスの有効期間にわたり、データが収集されます。

次の手順に従って、Visual Studio でプロファイル機能の使用を開始します。

  1. Visual Studio で Python コード ファイルを開きます。

  2. Python コードの現在の環境が CPython ベースのインタープリターであることを確認します。 選択したインタープリターは、[Python 環境] ウィンドウで確認できます。

  3. メイン ツール バーで、[デバッグ]>[Python プロファイルの起動] を選択します。 Visual Studio で [プロファイル設定] ダイアログが開きます。

    Visual Studio の [プロファイル設定] 構成ダイアログのスクリーンショット。

  4. [プロファイル設定] ダイアログで、プロファイリングするコード ファイルまたはプロジェクト コードを選択します。

    • すべてのプロジェクト コードをプロファイリングするには、次の手順を実行します。

      1. プロジェクトを開くを選択します。

      2. ドロップダウン リストからプロジェクトを選択します。 この一覧には、現在の Visual Studio ソリューション内のすべてのプロジェクトが表示されます。

    • 特定のファイルをプロファイリングするには、次の手順を実行します。

      1. [スタンドアロン スクリプト] を選択します。

      2. ドロップダウン リストから [Python インタープリター] を選択するか、場所を参照します。 一覧に含められていないインタープリターを指定するには、ドロップダウン リストで [その他] を選択し、[インタープリター パス] を指定します。

      3. スクリプト ファイルを特定するか、場所を参照します。

      4. [作業ディレクトリ] を指定するか、場所を参照します。

      5. スクリプトの [コマンド ライン引数] を指定します。

  5. 開始を選択します。

プロファイラーが実行され、Visual Studio でパフォーマンス レポートが開きます。 レポートを確認して、アプリケーションでの時間の使い方を調べることができます。

Visual Studio 2022 のプロファイル パフォーマンス レポートのスクリーンショット。

Visual Studio のプロファイル パフォーマンス レポートのスクリーンショット。

IronPython でプロファイラーを使用する

IronPython は Python の .NET の実装であり、32 ビット バージョンと 64 ビット バージョンがあります。 IronPython は CPython ベースのインタープリターではありません。 Visual Studio では IronPython の標準的な Python デバッグがサポートされていますが、プロファイル機能はサポートされていません。

IronPython プロジェクトの場合は、Visual Studio .NET プロファイラーを使用できます。 適切な引数を指定し、ターゲット アプリケーションとして ipy.exe コマンドを直接実行して、スタートアップ スクリプトを起動します。 コマンド ラインに -X:Debug 引数を含めて、すべての Python コードをデバッグおよびプロファイリングできるようにします。 この引数により、IronPython ランタイムとコードで費やされた時間を含むパフォーマンス レポートが生成されます。 コードは、壊れた名前を使って識別されます。

IronPython にはいくつかの組み込みのプロファイルが用意されていますが、現在、実行可能なビジュアライザーはありません。 詳細については、「IronPython プロファイラー」(ブログ) と IronPython ドキュメントの「デバッグとプロファイル」をご覧ください。