Skip to main content

Simple Python Timer class you can wrap around blocks of code you want to benchmark

Project description

WITHTIMER

Description

WithTimer is a Python module for benchmarking your code. It has the following features:

  • Simple use
    • Just create a timer object, and it times execution until it goes out of scope
  • Arbitrarily nested timers
    • Create as many nested timers as you want
    • Each timer pushes itself to a stack, and pops itself off when destroyed

Example usage

with Timer(name="Something slow"):
  do_something_slow()

Timing is turned off by default, and can be optionally turned on. You can instrument your code with timers, and leave them in when you're not using them:

if args.enable_timing:
  Timer.enable_timing(args.enable_timing)
with Timer(name="Timers are a sometimes treat"):
  do_something()

You can nest timers:

with Timer(name="Outer timer"):
  for i in range(0, 100000):
    with Timer(name="Hope this isn't O(n^2)"):
      do_something_critical()

Here's a complete example:

from time import sleep
from withtimer.withtimer import Timer


def func1(count):
    for i in range(0, 3):
        with Timer(name="Calling func2"):
            func2(2)
    print("func1 sleeping {}".format(count))
    sleep(count)


def func2(count):
    print("func2 sleeping {}".format(count))
    sleep(count)


if __name__ == "__main__":
    Timer.enable_timing(True)
    with Timer(name="main"):
        for i in range(0, 3):
            if i % 2 > 0:
                func1(i+1)

Output:

$ python3  ./example.py
[main] start
    [Calling func2] start
func2 sleeping 2
    [Calling func2] end	Elapsed time: 2.003 seconds

    [Calling func2] start
func2 sleeping 2
    [Calling func2] end	Elapsed time: 2.003 seconds

    [Calling func2] start
func2 sleeping 2
    [Calling func2] end	Elapsed time: 2.003 seconds

func1 sleeping 2
[main] end	Elapsed time: 8.015 seconds
$

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

withtimer-0.1.0.dev1.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

withtimer-0.1.0.dev1-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file withtimer-0.1.0.dev1.tar.gz.

File metadata

  • Download URL: withtimer-0.1.0.dev1.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.4

File hashes

Hashes for withtimer-0.1.0.dev1.tar.gz
Algorithm Hash digest
SHA256 10440efb6121f6be50da0a3354f938c694d7d50058d596a5a9fe59a5d97dcadd
MD5 a96456cfc2850df064e051e3aa639601
BLAKE2b-256 0e733968a43af63c06fddf02aec7527b1f1881acf793e448e2a60bdf90f0316d

See more details on using hashes here.

File details

Details for the file withtimer-0.1.0.dev1-py3-none-any.whl.

File metadata

  • Download URL: withtimer-0.1.0.dev1-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.4

File hashes

Hashes for withtimer-0.1.0.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 129aec4434bb6f2adeae5bbd6dcae383a58ee1b28e6039440a8f24262f29c966
MD5 e67f65796601bc000f9f13eb292fd778
BLAKE2b-256 6e3aa6127772d321c5faa8e180b2c2ced5ac8537a45bb5b8745706ae99c96b02

See more details on using hashes here.

Supported by

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