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 stuf 671B f 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