from collections.abc import Hashable from datetime import datetime import logging from rich.console import Console console = Console() timers_started_ats = dict() log = logging.getLogger(__name__) def start_timer(name: Hashable = 1, do_print=True): started_at = datetime.now() timers_started_ats[name] = started_at if do_print: log.info("%s_started", name) return name, started_at def stop_timer(name: Hashable = 1, do_print=True): ended_at = datetime.now() took = ended_at - timers_started_ats[name] if do_print: log.info("%s_ended took=%s", name, took.total_seconds()) return name, ended_at, took if __name__ == "__main__": from time import sleep start_timer() sleep(1) stop_timer()