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.

Installation

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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.6.tar.gz
Algorithm Hash digest
SHA256 d444dacde7ce96a9aed7b832c8b63fb8381498b944a4aa15e6e512b8ce20223e
MD5 ca6c8f1953edd04cbf158491b578c26e
BLAKE2b-256 720c9f63a8b1a1cd233cfbc1634938cc8ac084e069daee768374d269076adb87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 406991a79827210474b3adb7a28a5eafb1672d46b84daa39684a3fecdcd61f3c
MD5 03c23e6576243007b1fb3f50c23ddcc6
BLAKE2b-256 004fb5fe14be7624c6324d1dd18aa79fd81fd6981533397c570b2e0a7cbb4aa7

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