실행 시간을 측정하는 Python 데코레이터
10718 단어 pythonwebdevprogrammingbeginners
함수의 실행 시간 측정
from functools import wraps
import time
def timeit(func):
@wraps(func)
def timeit_wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
total_time = end_time - start_time
print(f'Function {func.__name__}{args} {kwargs} Took {total_time:.4f} seconds')
return result
return timeit_wrapper
@timeit
def calculate_something(num):
"""
Simple function that returns sum of all numbers up to the square of num.
"""
total = sum((x for x in range(0, num**2)))
return total
if __name__ == '__main__':
calculate_something(10)
calculate_something(100)
calculate_something(1000)
calculate_something(5000)
calculate_something(10000)
작동 원리
산출
Function calculate_something(10,) {} Took 0.0000 seconds
Function calculate_something(100,) {} Took 0.0008 seconds
Function calculate_something(1000,) {} Took 0.0760 seconds
Function calculate_something(5000,) {} Took 2.4503 seconds
Function calculate_something(10000,) {} Took 7.9202 seconds
클래스 내 메서드의 실행 시간 측정
from functools import wraps
import time
def timeit(func):
@wraps(func)
def timeit_wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
total_time = end_time - start_time
# first item in the args, ie `args[0]` is `self`
print(f'Function {func.__name__}{args} {kwargs} Took {total_time:.4f} seconds')
return result
return timeit_wrapper
class Calculator:
@timeit
def calculate_something(self, num):
"""
an example function that returns sum of all numbers up to the square of num
"""
total = sum((x for x in range(0, num**2)))
return total
def __repr__(self):
return f'calc_object:{id(self)}'
if __name__ == '__main__':
calc = Calculator()
calc.calculate_something(10)
calc.calculate_something(100)
calc.calculate_something(1000)
calc.calculate_something(5000)
calc.calculate_something(10000)
작동 원리
self
이므로 self산출
Function calculate_something(calc_object:140246512997904, 10) {} Took 0.0000 seconds
Function calculate_something(calc_object:140246512997904, 100) {} Took 0.0007 seconds
Function calculate_something(calc_object:140246512997904, 1000) {} Took 0.1820 seconds
Function calculate_something(calc_object:140246512997904, 5000) {} Took 1.9241 seconds
Function calculate_something(calc_object:140246512997904, 10000) {} Took 7.4005 seconds
다음 글에서는 다양한 종류의 데코레이터 레시피를 구현해 보겠습니다. 다가오는 기사를 계속 지켜봐주십시오. 뉴스레터를 구독하고 내 향후 기사를 받으려면 나와 연결하십시오.
Reference
이 문제에 관하여(실행 시간을 측정하는 Python 데코레이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kcdchennai/python-decorator-to-measure-execution-time-54hk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)