Python

Декоратор для замера времени выполнения

Algonexys · 07.08.2026 · 👁 0

Оборачивает функцию и логирует, сколько она работала. functools.wraps сохраняет имя и docstring.

Код

import functools
import logging
import time

logger = logging.getLogger(__name__)


def timed(func):
    """Логировать время выполнения функции."""
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        try:
            return func(*args, **kwargs)
        finally:
            elapsed = time.perf_counter() - start
            logger.info("%s выполнена за %.3f с", func.__qualname__, elapsed)
    return wrapper


@timed
def slow_sum(n):
    return sum(range(n))


slow_sum(1_000_000)