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.5.tar.gz (4.2 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.5-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.5.tar.gz
Algorithm Hash digest
SHA256 622905fa914abf6ece2261633bda110f6d6a3548ab069f578cb7add10bf10a7c
MD5 4e73c2ee4b24896474c9c297a2dc663e
BLAKE2b-256 52d7815967af031dc08f3a26e5d72d0716bdd801938d2224387187b87b2ef515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e4f8f82702dc12bdd8e68c5aeaa9a5e4eab6aea71cae2ed4f6d89bc041e634f4
MD5 c63b02ed1545a3b4bf433686e8b84990
BLAKE2b-256 6b18cca85ea33148b59c37e95eaa8a5174729b7a66f99815ad3ea782054099ac

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