Skip to content

Instantly share code, notes, and snippets.

@burkestar
Created May 4, 2016 11:48
Show Gist options
  • Save burkestar/11b4931aa8fc4367e139eaf6ada45264 to your computer and use it in GitHub Desktop.
Save burkestar/11b4931aa8fc4367e139eaf6ada45264 to your computer and use it in GitHub Desktop.
class Timer:
"""
A ``Timer`` ContextManager to simplify timing sections of code.
"""
def __init__(self, name=None, logger=None, log_level=logging.DEBUG):
"""
Constructs a ``Timer``.
Parameters
----------
name : str
An optional name for the timer, to be used for logging messages.
logger : logging.Logger
An optional logger for logging the elapsed time.
log_level : logging.LEVEL
An optional logging level (enumeration on logging module).
"""
self._name = name
self._logger = logger
self._log_level = log_level
def __enter__(self):
self.start = time.time()
return self
def __exit__(self, *args):
self.end = time.time()
self.interval = self.end - self.start
if self._logger:
self._logger.log(self._log_level, '{name} took {time} seconds.'.format(
name=self._name,
time=self.interval
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment