import time
''' 실행 시간 측정 데코레이터 '''
def elapsed(func): # 함수를 인풋으로 받는다.
def wrapper(a, b): # 함수 안의 함수 = 클로져
print('함수가 실행됩니다.')
start = time.time()
result = func(a, b) # 함수 실행
end = time.time()
print("함수 수행시간: %f 초" % (end - start)) # 함수 수행시간
return result # 함수 실행 결과 반환
return wrapper
@elapsed
def func1(a, b):
val = a + b
return val
@elapsed
def func2(a, b):
val = a * b
return val
if __name__ == "__main__":
func1(1,2)
func2(1, 2)
반복되는 작업을 여러 함수에 적용할 경우를 기준으로 강의를 보았습니다. 클래스를 사용하는 방법도 있고(def __call__(self, n):) 클로저를 사용하는 방법도 있습니다. 데코레이터가 파이썬을 공부하다보면 많이 보이는데 거슬러 올라가 기본 개념부터 배우게되어 이해가 더 잘되고 기억을 남길 수 있을 것 같습니다.