36 lines
760 B
Python
36 lines
760 B
Python
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()
|