본문 바로가기

Python

파이썬 코드를 프로파일링하는 여러가지 방법

728x90

아주 정밀하게 시간 측정하기

시간을 아주 정밀하게 측정하기 위한 두가지 함수가 있다.
time.perf_counter, time.process_time인데 두가지는 차이점이 있다.
time.process_time는 실제로 연산에 소요된 시간만 측정한다.(sleep, file io등에 소요된 시간은 제외된다.)
time.perf_counter는 전체적으로 흐른 시간을 측정한다.

from time import (
    process_time,
    perf_counter,
    sleep,
)

print(process_time())
sleep(1)
print(process_time())

print(perf_counter())
sleep(1)
print(perf_counter())
Which outputs:

0.03125
0.03125
2.560001310720671e-07
1.0005455362793145

Profile 모듈로 프로파일링하기

def testFunc():
    for i in xrange(100000):
        t = i * i

if __name__ == '__main__':
    import cProfile
    cProfile.run('testFunc()')>

Pycallgraph를 이용한 프로파일링

profile.py로 저장한다.

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
import main

with PyCallGraph(output=GraphvizOutput()):
    main.run()

python profile.py을 실행하면 프로파일 결과가 pycallgraph.png 이미지 파일로 저장이 된다.

[출처]
https://wikidocs.net/3692

728x90