Visual Studio에서 Python 코드 프로파일링

Visual Studio는 코드를 디버그할 때 Python 응용 프로그램에 대한 프로파일링 기능을 제공합니다. Visual Studio 디버거를 사용하면 코드를 단계별로 실행하여 변수를 검사하고, 프로그램 상태를 분석하고, 잠재적인 문제를 해결하는 등의 작업을 수행할 수 있습니다. Visual Studio 프로파일링 기능은 프로그램의 실행 시간에 대한 정보를 제공합니다. 이 정보를 사용하면 코드의 성능 문제를 식별하는 데 도움이 될 수 있습니다.

프로파일링은 CPython 기반 인터프리터를 사용하는 경우 Python 3.9 이하에서 사용할 수 있습니다.

필수 조건

Mac용 Visual Studio는 현재 지원되지 않습니다. 자세한 내용은 Mac용 Visual Studio 무슨 일이 일어나고 있는지?를 참조하세요. 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은 32비트 및 64비트 버전에서 사용할 수 있는 Python의 .NET 구현입니다. IronPython은 CPython 기반 인터프리터가 아닙니다. Visual Studio는 IronPython에 대한 표준 Python 디버깅을 지원하지만, 프로파일링 기능은 지원하지 않습니다.

IronPython 프로젝트의 경우 Visual Studio .NET 프로파일러를 사용할 수 있습니다. 적절한 인수를 사용하여 대상 응용 프로그램으로 직접 ipy.exe 명령을 실행하여 시작 스크립트를 시작합니다. 명령줄에 -X:Debug 인수를 포함하면 모든 Python 코드를 디버그하고 프로파일링할 수 있습니다. 이 인수는 IronPython 런타임과 사용자 코드에서 소요된 시간을 포함하는 성능 보고서를 생성합니다. 코드는 변환된 이름을 사용하여 식별됩니다.

IronPython은 몇 가지 기본 제공 프로파일링을 제공하지만, 현재는 사용할 수 있는 비주얼라이저가 없습니다. 자세한 정보는 IronPython 설명서의 IronPython Profiler(블로그) 및 디버깅 및 프로파일링을 참조하세요.