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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 baf59324c53b154787caf88e8c6776c40540284f520a40d501d2fa29ad1ba3b1
MD5 a7a5017349d84d2078f1ef8f342d69ff
BLAKE2b-256 91cd3fd81a20722f29e7afc7d765debd621da46a40650ab8704617b4f0dc506e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_timer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b6762c439cdd7360ec13d1f883caf7b353183c989534c30893b26fd837bd43b4
MD5 98f408ffe2477148e831fd049e29f487
BLAKE2b-256 554da66655bd0e824507074cab9f5548000df965c642ab11ad00a313005ba78e

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