Source code for wax_toolbox.profiling

import logging
from timeit import default_timer as timer

logger = logging.getLogger(__name__)


[docs]class Timer: """Simple timer focused on practical use. Args: label (str): label of the timer at_enter (bool): whether it should be also displayed when entering the context. Defaults to False. report (func): function to use for reporting. Defaults to logger.info """ def __init__(self, label, at_enter=False, report=print): self.label = label self.at_enter = at_enter self.report = report def __enter__(self): if self.at_enter: self.report("{} in progress...".format(self.label)) self.start = timer() return self def __exit__(self, *args): self.end = timer() self.interval = self.end - self.start self.report("{0:s} took {1:.3f} sec".format(self.label, self.interval))