Partage via


Profiler le code Python dans Visual Studio

Visual Studio fournit des fonctionnalités de profilage pour les applications Python lorsque vous déboguez votre code. Visual Studio débogueur vous permet de parcourir votre code pour vérifier les variables, analyser l’état du programme, résoudre les problèmes potentiels, et ainsi de suite. Les fonctionnalités de profilage de Visual Studio fournissent des informations sur les temps d’exécution de votre programme. Vous pouvez utiliser ces informations pour identifier les problèmes de performances dans votre code.

Le profilage est disponible pour Python 3.9 et versions antérieures lorsque vous utilisez un interpréteur basé sur CPython.

Conditions préalables

Visual Studio pour Mac n’est pas pris en charge. Pour plus d’informations, consultez Qu’est-ce qui se passe dans Visual Studio pour Mac ? Visual Studio Code sur Windows, Mac et Linux fonctionne correctement avec Python via des extensions disponibles.

Utiliser profileur avec l’interpréteur CPython

Lorsque vous profilez une application Python, Visual Studio collecte des données pour la durée de vie du processus, mesurée en millisecondes (ms).

Pour commencer à utiliser les fonctionnalités de profilage dans Visual Studio, procédez comme suit :

  1. Dans Visual Studio, ouvrez votre fichier de code Python.

  2. Vérifiez que l’environnement actuel de votre code Python est un interpréteur basé sur CPython. Vous pouvez vérifier l’interpréteur sélectionné dans la fenêtre environnements Python .

  3. Dans la barre d’outils principale, sélectionnez Déboguer>Lancer le profilage Python. Visual Studio ouvre la boîte de dialogue paramètres de profilage :

    Capture d’écran de la boîte de dialogue Configuration des paramètres de profilage dans Visual Studio.

  4. Dans la boîte de dialogue Paramètres de profilage, choisissez le fichier de code ou le code de projet que vous souhaitez profiler :

    • Pour profiler tout le code du projet :

      1. Sélectionnez Ouvrir le projet.

      2. Sélectionnez le projet dans la liste déroulante. La liste affiche tous les projets dans la solution Visual Studio actuelle.

    • Pour profiler un fichier spécifique :

      1. Sélectionnez Script autonome.

      2. Sélectionnez l'interpréteur Python dans la liste déroulante ou parcourez jusqu'à l'emplacement. Pour spécifier un interpréteur non répertorié, choisissez Autre dans la liste déroulante, puis spécifiez le chemin d’accès de l’interpréteur .

      3. Identifiez le fichier Script ou accédez à l’emplacement.

      4. Spécifiez le Répertoire de travail ou accédez à l’emplacement.

      5. Spécifiez les Arguments de ligne de commande pour le script.

  5. Sélectionnez Démarrer.

Le profileur s’exécute et ouvre un rapport de performances dans Visual Studio. Vous pouvez consulter le rapport pour explorer la façon dont le temps est passé dans votre application :

Capture d’écran du rapport de performances de profilage dans Visual Studio 2022.

Capture d’écran du rapport de performances de profilage dans Visual Studio.

Utiliser profileur avec IronPython

IronPython est une implémentation .NET de Python disponible dans les versions 32 bits et 64 bits. IronPython n’est pas un interpréteur CPython. Visual Studio prend en charge le débogage Python standard pour IronPython, mais pas les fonctionnalités de profilage.

Pour les projets IronPython, vous pouvez utiliser le profileur Visual Studio .NET. Exécutez la commande ipy.exe directement en tant qu’application cible avec les arguments appropriés pour lancer votre script de démarrage. Sur la ligne de commande, incluez l’argument -X:Debug pour vous assurer que tout votre code Python peut être débogué et profilé. Cet argument génère un rapport de performances qui inclut le temps passé dans le runtime IronPython et votre code. Votre code est identifié à l'aide de noms tronqués.

IronPython offre un profilage intégré, mais il n’existe actuellement aucun visualiseur utilisable. Pour plus d'informations, consultez Profileur IronPython (blog) et Profilage et débogage dans la documentation IronPython.