Profilowanie kodu języka Python w programie Visual Studio
Program Visual Studio udostępnia funkcje profilowania dla aplikacji języka Python podczas debugowania kodu. Debuger programu Visual Studio umożliwia przejście przez kod w celu sprawdzenia zmiennych, analizowania stanu programu, rozwiązywania potencjalnych problemów itd. Funkcje profilowania programu Visual Studio udostępniają informacje o czasie wykonywania programu. Te informacje ułatwiają identyfikowanie problemów z wydajnością w kodzie.
Profilowanie jest dostępne dla języka Python w wersji 3.9 i starszej podczas korzystania z interpretera opartego na języku CPython.
Wymagania wstępne
Program Visual Studio w systemie Windows zainstalowany z obsługą obciążeń języka Python. Aby uzyskać więcej informacji, zobacz Instalowanie obsługi języka Python w programie Visual Studio.
Interpreter oparty na języku CPython. CPython jest "natywnym" i najczęściej używanym interpreterem i jest dostępny w 32-bitowych i 64-bitowych wersjach (zalecane 32-bitowe). Aby uzyskać więcej informacji, zobacz Instalowanie interpreterów języka Python.
Projekt w języku Python z kodem lub folderem z kodem w języku Python.
Visual Studio dla komputerów Mac nie jest obsługiwana. Aby uzyskać więcej informacji, zobacz Co się dzieje z Visual Studio dla komputerów Mac? Program Visual Studio Code w systemach Windows, Mac i Linux dobrze współpracuje z językiem Python za pośrednictwem dostępnych rozszerzeń.
Używanie profilera z interpreterem opartym na języku CPython
Podczas profilowania aplikacji w języku Python program Visual Studio zbiera dane na okres istnienia procesu mierzony w milisekundach (ms).
Wykonaj następujące kroki, aby rozpocząć pracę z funkcjami profilowania w programie Visual Studio:
W programie Visual Studio otwórz plik kodu w języku Python.
Upewnij się, że bieżące środowisko dla kodu języka Python jest interpreterem opartym na języku CPython. Wybrany interpreter można sprawdzić w oknie Środowiska języka Python.
Na głównym pasku narzędzi wybierz pozycję Debuguj>uruchamianie profilowania języka Python. Program Visual Studio otwiera okno dialogowe Ustawienia profilowania:
W oknie dialogowym Ustawienia profilowania wybierz plik kodu lub kod projektu, który chcesz profilować:
Aby profilować cały kod projektu:
Wybierz pozycję Otwórz projekt.
Wybierz projekt z listy rozwijanej. Lista zawiera wszystkie projekty w bieżącym rozwiązaniu programu Visual Studio.
Aby profilować określony plik:
Wybierz pozycję Autonomiczny skrypt.
Wybierz interpreter języka Python z listy rozwijanej lub przejdź do lokalizacji. Aby określić interpreter bez listy, wybierz pozycję Inne na liście rozwijanej, a następnie określ ścieżkę interpretera.
Zidentyfikuj plik skryptu lub przejdź do lokalizacji.
Określ katalog roboczy lub przejdź do lokalizacji.
Określ wszystkie argumenty wiersza polecenia dla skryptu.
Wybierz Start.
Profiler jest uruchamiany i otwiera raport wydajności w programie Visual Studio. Możesz przejrzeć raport, aby dowiedzieć się, jak spędzasz czas w aplikacji:
Używanie profilera z platformą IronPython
IronPython to implementacja platformy .NET języka Python, która jest dostępna w 32-bitowych i 64-bitowych wersjach. IronPython nie jest interpreterem opartym na języku CPython. Program Visual Studio obsługuje standardowe debugowanie języka Python dla środowiska IronPython, ale nie funkcje profilowania.
W przypadku projektów IronPython można użyć profilera .NET programu Visual Studio. Uruchom polecenie bezpośrednio jako aplikację ipy.exe
docelową z odpowiednimi argumentami, aby uruchomić skrypt uruchamiania. W wierszu polecenia dołącz -X:Debug
argument, aby upewnić się, że cały kod języka Python można debugować i profilować. Ten argument generuje raport wydajności, który zawiera czas spędzony w środowisku uruchomieniowym IronPython i kodzie. Kod jest identyfikowany przy użyciu nazw mangled.
IronPython oferuje pewne wbudowane profilowanie, ale obecnie nie ma możliwego do działania wizualizatora. Aby uzyskać więcej informacji, zobacz Artykuł IronPython Profiler (blog) i Debugowanie i profilowanie w dokumentacji ironPython.