Skip to content

Instantly share code, notes, and snippets.

@fjsj
Created December 9, 2021 23:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fjsj/eeb2c1a8c116d050e1b31081a30ce209 to your computer and use it in GitHub Desktop.
Save fjsj/eeb2c1a8c116d050e1b31081a30ce209 to your computer and use it in GitHub Desktop.
Flexible Python context manager to log elapsed time
# Based on this: https://stackoverflow.com/a/62956469/145349
import logging
import time
from contextlib import contextmanager
@contextmanager
def log_time(logger, log_message="Took %.4f secs", log_level=logging.INFO):
start = time.perf_counter()
yield
elapsed = time.perf_counter() - start
logger.log(log_level, log_message, elapsed)
# Usage:
logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
with log_time(logger=logger):
time.sleep(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment