👁 Быстро замерить время выполнения блока кода или функции — частая задача. Особенно в проде, когда нужно понять, где тормозит код, или просто вести лог медленных операций. Вместо 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



