An extension to the core python logging library for logging the beginning and completion of tasks and subtasks.
tasklogger is available on pip. Install by running the following in a terminal:
pip install --user tasklogger
Alternatively, tasklogger can be installed using Conda (most easily obtained via the Miniconda Python distribution):
conda install -c conda-forge tasklogger
Receive timed updates mid-computation using tasklogger.log_start
and tasklogger.log_complete
:
>>> import tasklogger
>>> import time
>>> tasklogger.start_task("Supertask")
Calculating Supertask...
>>> time.sleep(1)
>>> tasklogger.start_task("Subtask")
Calculating Subtask...
>>> time.sleep(1)
>>> tasklogger.complete_task("Subtask")
Calculated Subtask in 1.01 seconds.
>>> time.sleep(1)
>>> tasklogger.complete_task("Supertask")
Calculated Supertask in 3.02 seconds.
Simplify logging syntax with tasklogger.log_task
:
>>> import tasklogger
>>> import time
>>> with tasklogger.log_task("Supertask"):
... time.sleep(1)
... with tasklogger.log_task("Subtask"):
... time.sleep(1)
... time.sleep(1)
Calculating Supertask...
Calculating Subtask...
Calculated Subtask in 1.01 seconds.
Calculated Supertask in 3.02 seconds.
Log wall time, CPU time, or any other counter function with the class API:
>>> import tasklogger
>>> import time
>>> logger = tasklogger.TaskLogger(name='cpu_logger', timer='cpu', min_runtime=0)
>>> with logger.log_task("Supertask"):
... time.sleep(1)
... with logger.log_task("Subtask"):
... _ = [[(i,j) for j in range(i)] for i in range(1000)]
... time.sleep(1)
Calculating Supertask...
Calculating Subtask...
Calculated Subtask in 0.09 seconds.
Calculated Supertask in 0.09 seconds.
>>> logger = tasklogger.TaskLogger(name='nano_logger', timer=time.monotonic_ns)
>>> with logger.log_task("Supertask"):
... time.sleep(1)
... with logger.log_task("Subtask"):
... time.sleep(1)
... time.sleep(1)
Calculating Supertask...
Calculating Subtask...
Calculated Subtask in 1001083511.00 seconds.
Calculated Supertask in 3003702161.00 seconds.
Use tasklogger
for all your logging needs:
>>> tasklogger.log_info("Log some stuff that doesn't need timing")
Log some stuff that doesn't need timing
>>> tasklogger.log_debug("Log some stuff that normally isn't needed")
>>> tasklogger.set_level(2)
Set TaskLogger logging to DEBUG
>>> tasklogger.log_debug("Log some stuff that normally isn't needed")
Log some stuff that normally isn't needed