본문 바로가기
Flutter/Flutter FAQ

Python 파이썬 스크립트를 프로파일링하는 방법은 무엇인가요?, How do I profile a Python script?

by 베타코드 2023. 5. 19.
반응형

질문


Project Euler와 같은 코딩 대회에서는 종종 최대 실행 시간이나 특정 솔루션이 얼마나 빠르게 실행되는지 자랑합니다. Python에서는 때로 접근 방법이 다소 어색 할 수 있습니다. 예를 들어, 타이밍 코드를 __main__에 추가하는 것입니다.

Python 프로그램이 실행되는 데 걸리는 시간을 프로파일링하는 좋은 방법은 무엇인가요?


답변


파이썬에는 cProfile이라는 프로파일러가 있습니다. 이는 총 실행 시간뿐만 아니라 각 함수 별로 시간을 측정하고 각 함수가 호출된 횟수도 알려주므로 최적화해야 할 위치를 쉽게 결정할 수 있습니다.

코드 내부나 인터프리터에서 다음과 같이 호출할 수 있습니다.

import cProfile
cProfile.run('foo()')

더욱 유용하게 사용하려면 다음과 같이 스크립트를 실행할 때 cProfile을 호출할 수 있습니다.

python -m cProfile myscript.py

더욱 편리하게 하기 위해 'profile.bat'이라는 작은 배치 파일을 만들었습니다.

python -m cProfile %1

그러면 다음과 같이 실행하면 됩니다.

profile euler048.py

그러면 다음과 같은 결과를 얻을 수 있습니다.

1007 function calls in 0.061 CPU seconds

Ordered by: standard name
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000    0.061    0.061 <string>:1(<module>)
 1000    0.051    0.000    0.051    0.000 euler048.py:2(<lambda>)
    1    0.005    0.005    0.061    0.061 euler048.py:2(<module>)
    1    0.000    0.000    0.061    0.061 {execfile}
    1    0.002    0.002    0.053    0.053 {map}
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler objects}
    1    0.000    0.000    0.000    0.000 {range}
    1    0.003    0.003    0.003    0.003 {sum}

편집: PyCon 2013에서 좋은 비디오 자료로 업데이트된 링크를 업데이트하였습니다. Python Profiling
유튜브에서도 볼 수 있습니다.

반응형

댓글