python 함수 실행 시간 측정 (decorator 이용)
2023. 7. 13. 01:25ㆍpython
python으로 개발을 하다보면 해당 함수의 실행 시간을 측정하고 싶을 때가 있다.
이때 대부분의 사람들이 하는 방법은 아래와 같이 time 모듈을 사용한다.
import time
def sum_n1(n):
sum_= 0
start = time.time()
for i in range(n):
sum_ += i
end = time.time()
print(f"sum_n1 : {end-start} sec")
return sum_
def sum_n2(n):
sum_= 0
start = time.time()
for i in range(n):
sum_ += i
end = time.time()
print(f"sum_n2 : {end-start} sec")
return sum_
sum_n1(10000)
sum_n2(10000)
# output
# sum_n1 : 0.0006511211395263672 sec
# sum_n2 : 0.0006499290466308594 sec
하나의 함수의 실행 시간을 측정할 때는 위와 같이 하면 되지만, 만약 여러 개의 함수의 실행 시간을 측정해야한다면, 여간 귀찮은게 아니다.
이때, python의 decorator를 사용하면, 함수의 이름을 출력할 수 있고, 동시에 불필요한 코드를 줄일 수 있다.
(Decorator 설명 : https://velog.io/@jaeha0725/Python-decorator-register)
import time
def elapsed(f):
def wrap(*args):
start = time.process_time()
# 함수 실행
ret = f(*args)
end = time.process_time()
elapsed = end - start
print(f'{f.__name__} elapsed: {elapsed} sec')
return ret
return wrap
@elapsed
def sum_n1(n):
sum_= 0
for i in range(n):
sum_ += i
return sum_
@elapsed
def sum_n2(n):
sum_= 0
for i in range(n):
sum_ += i
return sum_
# 함수 실행
sum_n1(10000)
sum_n2(100000)
다음과 같이 쓰면, 함수 위에 위와 같이 Decorator를 사용하여 모든 함수의 실행 시간을 @elapsed 한줄로 실행이 가능해진다.
'python' 카테고리의 다른 글
헝가리안 알고리즘 (0) | 2023.11.17 |
---|---|
cv2 bbox 그리기 (0) | 2023.11.16 |
python opencv 이미지 합치기 (1) | 2023.11.01 |
Python import 위치 알기 (0) | 2023.10.10 |
python 데이터 저장 읽기 / pickle / 리스트, 딕셔너리 저장 (0) | 2023.08.10 |