Skip to main content

Named timers for measuring multiple operations within a function or script

Project description

philiprehberger-task-timer

Tests PyPI version License

Named timers for measuring multiple operations within a function or script.

Install

pip install philiprehberger-task-timer

Usage

from philiprehberger_task_timer import TaskTimer

t = TaskTimer()

with t.task("load data"):
    data = load_from_disk()

with t.task("process"):
    result = process(data)

with t.task("save"):
    save(result)

t.summary()

Output:

load data    0.52s  (26%)
process      1.23s  (62%)
save         0.24s  (12%)

Nested tasks

Tasks can be nested. Nested tasks appear indented in the summary output.

t = TaskTimer()

with t.task("pipeline"):
    with t.task("step 1"):
        do_step_1()
    with t.task("step 2"):
        do_step_2()

t.summary()

Output:

pipeline      2.05s  (100%)
  step 1      0.80s  (39%)
  step 2      1.25s  (61%)

Laps

Use lap() to record incremental time without context managers.

t = TaskTimer()
load()
t.lap("load")
process()
t.lap("process")
t.summary()

as_dict

Retrieve raw timing data as a dictionary.

t = TaskTimer()
with t.task("work"):
    do_work()

print(t.as_dict())  # {"work": 1.234}

Async support

The task() context manager works with async with as well.

t = TaskTimer()
async with t.task("fetch"):
    await fetch_data()
t.summary()

API

Method / Property Description
task(name) Context manager that times the enclosed block (sync and async)
lap(name) Record time since the last lap or timer creation
summary(*, file=sys.stdout) Print formatted summary with name, duration, and percentage
as_dict() Return dict[str, float] of task name to seconds
total Property returning the total time across all tasks
reset() Clear all recorded tasks

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_task_timer-0.1.4.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_task_timer-0.1.4-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_task_timer-0.1.4.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.4.tar.gz
Algorithm Hash digest
SHA256 1d34c2973ce91e05c5ca79ba247061e2c51e25c542f7bb7159e3b145d9d423b6
MD5 4b3880aa0f42f0735ebc5fb168c8313b
BLAKE2b-256 4333c5b87da228200000195483cd20f19542bc13faccbd1f90fe1bf1532d4a14

See more details on using hashes here.

File details

Details for the file philiprehberger_task_timer-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 848ab4e6bfa58e8afd447c5aadcc8e47cad32afbd606f40de776af51d789f61e
MD5 c09d365b393c4b31ac7793934a796e97
BLAKE2b-256 ee95c99e9b2170f13cd68b502dee7ef4f0b604d4836bef7b9c29b3353956d547

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page