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

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.3.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.3-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c02f27077139c9799aa7f92bdc2902420e27e760b405443f87a44d6971c819aa
MD5 3316e54ec328f3c01dcc137f146ed03e
BLAKE2b-256 7448a2643a727aca4ca3f714555c818aba9e19580d71f6e6516beec8f984d31c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 86179782a78d42a2686e34feffbe6d13dec171f9b356d9596064c3e6bbc7de77
MD5 41eaecb208e7271c550cabec25e06abf
BLAKE2b-256 d203381dfbecbf0b6204eba272da74eb86d50f6157c994a962e342141c66a014

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