Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 프로그램 실행 시간 측정 방법 – time과 timeit 모듈 활용하기

파이썬으로 작성한 프로그램의 실행 시간을 측정하고 싶다면 time 모듈과 timeit 모듈을 활용할 수 있습니다. 과거에는 time.clock()이나 time.time() 함수가 널리 사용되었으며, 공식 문서 역시 벤치마킹 목적으로 이러한 함수를 사용할 것을 권장했습니다.

time 모듈로 기본 실행 시간 측정하기

가장 기본적인 방법은 코드 실행 전후의 시각을 기록한 뒤 두 값의 차이를 계산하는 것입니다.

예제

import time

t0 = time.clock()
print("Hello")
elapsed = time.clock() - t0
print("Time elapsed: ", elapsed)  # 경과된 CPU 시간(초 단위, 부동소수점)

실행 결과

Time elapsed: 0.0009403145040156798

참고: time.clock()의 지원 종료

time.clock()은 Python 3.3에서 지원이 중단(deprecated)되었고, Python 3.8부터는 완전히 제거되었습니다. 따라서 최신 버전의 파이썬에서는 아래의 대체 함수를 사용하는 것이 좋습니다.

  • time.perf_counter() — 벤치마킹에 가장 적합한 고해상도 타이머로, 실제 경과 시간(wall-clock time)을 측정합니다.
  • time.process_time() — 현재 프로세스가 사용한 순수 CPU 시간만 측정합니다(대기 시간은 제외).
import time

start = time.perf_counter()
print("Hello")
elapsed = time.perf_counter() - start
print("Time elapsed:", elapsed)

timeit 모듈로 정밀한 성능 분석하기

짧은 코드 조각의 실행 시간을 통계적으로 신뢰성 있게 분석하려면 timeit 모듈을 사용하는 것이 가장 좋습니다. 이 모듈은 동일한 코드를 여러 번 반복 실행한 뒤 가장 짧았던 실행 시간을 알려주기 때문에, 운영체제 스케줄링과 같은 외부 요인의 영향을 최소화할 수 있습니다.

예제

def f(x):
    return x * x

import timeit
timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=100000)

실행 결과

[2.0640320777893066, 2.0876040458679199, 2.0520210266113281]

timeit.repeat()는 기본적으로 테스트를 세 번 수행하고 각 회차별 총 실행 시간을 리스트로 반환합니다. 반환된 값 중 가장 작은 값이 해당 코드의 실제 성능을 가장 잘 나타내는 지표입니다. 이처럼 반복 측정을 통해 얻은 결과는 일회성 측정보다 훨씬 안정적이며 신뢰할 수 있습니다.