Универсальный таймер выполнения в Python

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

pythoncontextlibтаймер

👁 Быстро замерить время выполнения блока кода или функции — частая задача. Особенно в проде, когда нужно понять, где тормозит код, или просто вести лог медленных операций. Вместо print(time.time()) и ручных вычитаний — используем контекстный менеджер.

📝 Минималистичное решение через contextlib:

import time
from contextlib import contextmanager

@contextmanager
def timer(name="Block"):
    start = time.time()
    yield
    duration = time.time() - start
    print(f"[{name}] took {duration:.3f} sec")

# Использование:
with timer("Heavy task"):
    result = [i**2 for i in range(10**6)]

📌 Как это работает:

  • @contextmanager превращает функцию в контекстный менеджер
  • До yield запускается таймер, после yield — считается разница
  • Весь код внутри with timer(...) будет измерен
  • Можно давать имя блоку, чтобы понимать, что именно замеряется

🔎 Полезно для:

  • Логирования времени выполнения операций в API и CLI
  • Профилирования конкретных мест в коде без профилировщика
  • Временного анализа при оптимизации, тестах и отладке

❗️ Не требует сторонних зависимостей, работает везде, легко переиспользуется. Если нужно — можно заменить print на logging.info и писать в прод-логи.

tags: #полезно #python #разработка

❤️ @recura_tech

Скриншот с примером кода на Python: контекстный менеджер timer через contextlib, видна подсветка синтаксиса и логотип RECURA на тёмном фоне
Пример минималистичного таймера в Python в виде скриншота кода с оформлением RECURA.

Читайте так же