Python의 집계 코드 타이밍
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 my_func():
# do stuff
이 데코레이터는 소요 시간을 가져오는 함수를 데코레이션하여 사용할 수 있습니다.
이 함수가 호출된 횟수와 최대 소요 시간과 같은 시간 프레임에서 이 타이밍 데이터를 집계하려면 codetiming이라는 라이브러리를 사용해야 합니다.
다음은 샘플 사용 사례입니다.
# pip install codetiming
# pip install humanfriendly
from codetiming import Timer
from humanfriendly import format_timespan
from loguru import logger
@Timer(name="my_func", text=lambda secs: f"my_func elapsed time: {format_timespan(secs)}")
def my_func():
...
def get_aggregated_timings(cls):
timed_function = "my_func"
logger.info(
f"\n{timed_function} count: {Timer.timers.count(timed_function)}\n"
f"total: {Timer.timers.total(timed_function)}\n"
f"max: {Timer.timers.max(timed_function)}\n"
f"min: {Timer.timers.min(timed_function)}\n"
f"mean: {Timer.timers.mean(timed_function)}\n"
f"standard deviation: {Timer.timers.stdev(timed_function)}\n"
f"median: {Timer.timers.median(timed_function)}\n"
)
Timer.timers.clear() # clears all the timer data
이렇게 하면
my_func
에서 보낸 총 시간을 찾을 수 있습니다. 그들 각각이 기록할 내용을 살펴보겠습니다.count: 함수가 호출된 횟수.
합계: 함수에서 경과된 모든 초의 합계
최대: 단일 흐름에 소요된 최대 시간
min: 단일 흐름에 소요된 최소 시간
평균: 해당 기능에 소요된 모든 시간의 평균
중앙값: 모든 경과 시간의 중앙값
stdev: 모든 경과 시간의 표준 편차
마지막에
Timer.timers.clear()
메모리에 저장된 데이터를 지우고 다음 반복을 위해 새로 시작합니다.시간 제한이 있는 메모리 내 LRU 캐시를 사용하려면 다음 문서를 확인하십시오.
Cache functions with timeout
내 Twitter 핸들에 Python 프로그래밍에 대해 게시합니다. 팔로우할 수 있습니다.
원래 게시 위치: my blog
Reference
이 문제에 관하여(Python의 집계 코드 타이밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/soumendrak/aggregate-code-timing-in-python-fj4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)