태지쌤

로봇 & 코딩교육 No.1 크리에이터

파이썬

파이썬 데코레이터(decorator)

태지쌤 2023. 3. 8. 20:30
반응형
''' 실행 시간 측정 데코레이터 '''
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__":
    result = func1(1,2)
    print(result)

이 코드는 파이썬에서 데코레이터(decorator)를 활용하여 함수 실행 시간을 측정하는 예시입니다.

elapsed 함수는 데코레이터로 사용될 함수로, 함수를 인자로 받습니다. 이 함수는 내부 함수인 wrapper를 정의하고 반환합니다. wrapper 함수는 func 함수를 실행하고, 실행 시간을 측정하여 출력하고, func 함수의 반환값을 반환합니다.

@elapsed 데코레이터를 사용하여 func1 함수와 func2 함수를 각각 실행 시간 측정이 가능한 함수로 장식합니다. 이제 func1 함수를 호출하면 wrapper 함수가 실행되어 함수 실행 시간을 측정한 후, func1 함수의 반환값을 반환합니다.

if __name__ == "__main__" 부분에서 result 변수에 func1(1, 2)의 반환값을 저장하고, 출력합니다. 이 때 elapsed 데코레이터가 장식된 func1 함수가 실행되며, 함수 실행 시간이 출력됩니다.

이를 통해 데코레이터를 사용하여 함수의 실행 시간을 측정할 수 있습니다. 함수의 실행 시간을 측정하는 것은 함수의 성능을 평가하고, 개선하는 데 도움이 됩니다.

 

반응형