[파이썬] 프로파일링 도구의 종류와 사용법

프로파일링(Profiling)은 프로그램의 실행 시간과 자원 사용량을 측정하여 성능 저하의 원인을 찾는 기술입니다. 이 글에서는 프로파일링 도구의 종류와 사용법에 대해 살펴보겠습니다.

1. cProfile

cProfile은 파이썬의 내장 프로파일링 도구로, 프로그램의 함수 호출 횟수와 각 함수의 소요 시간을 측정합니다.

import cProfile

def my_function():
    # 함수의 내용
    pass

cProfile.run('my_function()')

위의 예시 코드에서는 cProfile.run() 함수를 사용하여 my_function() 함수의 실행 시간과 함수 호출 정보를 출력합니다.

2. line_profiler

line_profiler는 함수 내 각 라인의 실행 시간을 측정하여 성능 병목현상을 분석합니다.

%load_ext line_profiler

def my_function():
    # 함수의 내용
    pass

%lprun -f my_function my_function()

위의 예시 코드에서는 %load_ext line_profiler%lprun 매직 명령어를 사용하여 my_function() 함수의 라인별 실행 시간을 측정합니다.

3. memory_profiler

memory_profiler는 메모리 사용량을 모니터링하여 메모리 누수를 발견하는 데 사용됩니다.

%load_ext memory_profiler

@profile
def my_function():
    # 함수의 내용
    pass

my_function()

위의 예시 코드에서는 %load_ext memory_profiler를 사용하여 my_function() 함수의 메모리 사용량을 측정합니다. @profile 데코레이터를 함수에 추가하여 해당 함수의 메모리 사용량을 측정할 수 있습니다.

4. py-spy

py-spy는 간단하고 빠른 프로파일링 도구로, 소스 코드 수정 없이 파이썬 프로그램을 실행하며 프로파일링 정보를 수집할 수 있습니다.

$ py-spy top -p [PID]

위의 예시 코드에서는 py-spy top 명령어를 사용하여 프로세스의 CPU 사용량을 모니터링합니다.

마무리

프로파일링 도구를 사용하여 프로그램의 성능을 분석하고 최적화할 수 있습니다. 각 도구는 서로 다른 측정 항목에 특화되어 있으므로 필요한 정보에 맞게 선택하여 사용하면 됩니다. 성능 개선이 필요한 프로그램에서 프로파일링을 적용해보세요!