发布于 2026-01-06 0 阅读
0

Python 装饰器显示函数的执行时间 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

Python 装饰器,用于显示函数的执行时间

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

在开发高吞吐量、低延迟系统时,测量代码的执行时间至关重要,这有助于识别瓶颈并加以解决。为此,我们将使用装饰器来测量它所装饰的函数的执行时间。


from datetime import timedelta
from functools import wraps
from timeit import default_timer as timer
from typing import Any, Callable, Optional


def metrics(func: Optional[Callable] = None, name: Optional[str] = None, hms: Optional[bool] = False) -> Any:
    """Decorator to show execution time.

    :param func: Decorated function
    :param name: Metrics name
    :param hms: Show as human-readable string
    """
    assert callable(func) or func is None

    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            comment = f"Execution time of {name or fn.__name__}:"
            t = timer()
            result = fn(*args, **kwargs)
            te = timer() - t

            # Log metrics
            from common import log
            logger = log.withPrefix('[METRICS]')
            if hms:
                logger.info(f"{comment} {timedelta(seconds=te)}")
            else:
                logger.info(f"{comment} {te:>.6f} sec")

            return result
        return wrapper

    return decorator(func) if callable(func) else decorator
Enter fullscreen mode Exit fullscreen mode

通过向每个函数添加此装饰器,我们可以使用 APM 的分析功能来识别瓶颈,并更好地了解系统。

祝你编程愉快 :D

文章来源:https://dev.to/ahmedeltaweel/python-decorator-to-show-execution-time-of-a-function-afk