@contextmanager
    def timed(self, msg='', level=logging.DEBUG, save_result=True):
        # At the start of the with block
        start = datetime.now()
        yield
        # After leaving the with block
        stop = datetime.now()
        elapsed_time = (stop - start).total_seconds()

        # Log if necessary
        if level is not None:
            self.log(level,
                     msg + " took %0.6fs" % elapsed_time)

        # Save result if necessary
        if save_result:
            self._delegate_process_timings((msg, elapsed_time))
Represents a notion of time for this scheduler. Tasks being scheduled
dataset/ETHPy150Open duerrp/pyexperiment/pyexperiment/Logger.py/TimingLogger.timed--crossover with--dataset/ETHPy150Open ReactiveX/RxPY/rx/concurrency/historicalscheduler.py/HistoricalScheduler.now