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

파이썬에서 함수 실행 시간을 측정하는 방법 완벽 정리

프로그램 전체 또는 특정 함수의 실행 시간을 측정해야 하는 경우가 자주 있습니다. 파이썬에서는 time 모듈의 time.clock() 또는 time.time() 함수를 사용하여 이를 간단하게 구현할 수 있습니다. 공식 파이썬 문서에서는 벤치마킹(성능 측정) 목적으로는 time.clock() 사용을 권장하고 있으며, 측정하고자 하는 함수 호출 앞뒤에 이 함수들을 배치하면 해당 함수에 소요된 시간을 확인할 수 있습니다.

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

다음은 함수 실행 시간을 측정하는 기본적인 예제입니다.

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

실행 결과

Time elapsed:  0.0009403145040156798

참고: time.clock() 함수는 Python 3.3부터 지원 중단(deprecated)되었으며, Python 3.8에서 완전히 제거되었습니다. 최신 버전의 파이썬을 사용한다면 더 정밀한 측정이 가능한 time.perf_counter()를 대신 사용하는 것이 좋습니다.

import time
t0 = time.perf_counter()
print("Hello")
t1 = time.perf_counter() - t0
print("Time elapsed: ", t1)

timeit 모듈로 정확한 통계 분석하기

더 신뢰할 수 있는 성능 분석이 필요하다면 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()는 기본적으로 3번의 반복(repeat)을 수행하며, 각 반복마다 지정된 횟수(number=100000)만큼 코드를 실행한 후 소요 시간을 리스트 형태로 반환합니다. 반환된 값들 중 최솟값이 가장 왜곡이 적은 순수 실행 시간에 가깝기 때문에, 일반적으로 이 값을 기준으로 성능을 비교하는 것이 좋습니다.

정리

  • 간단한 시간 측정에는 time.perf_counter()(구버전은 time.clock())를 함수 호출 앞뒤에 배치하여 사용합니다.
  • 정확한 벤치마킹이 필요하다면 timeit 모듈로 여러 번 반복 실행 후 최소 시간을 확인합니다.
  • 측정 환경에 따라 결과가 달라질 수 있으므로, 동일한 조건에서 여러 번 측정하여 비교하는 것이 중요합니다.