Files
bugsink/performance/context_managers.py
Klaas van Schelven 2ddc33017a Add performance context_manager for timings
was useful during debugging
2024-07-08 09:40:47 +02:00

49 lines
886 B
Python

import time
from contextlib import contextmanager
from django.db import connection
@contextmanager
def time_to_logger(logger, msg):
t0 = time.time()
try:
yield
finally:
took = (time.time() - t0) * 1000
logger.info(f"{took:6.2f}ms {msg}")
class TimeAndQueryCount:
def __init__(self):
self.took = None
self.count = None
@contextmanager
def time_and_query_count():
result = TimeAndQueryCount()
pre = len(connection.queries)
t0 = time.time()
try:
yield result
finally:
result.took = (time.time() - t0) * 1000
result.count = len(connection.queries) - pre
class Time:
def __init__(self):
self.took = None
@contextmanager
def time_it():
result = Time()
t0 = time.time()
try:
yield result
finally:
result.took = (time.time() - t0) * 1000