Skip to main content

A flexible, customizable timer for your Python code

Project description

Python Timer Functions: Three Ways to Monitor Your Code

codetiming - A flexible, customizable timer for your Python code

Latest version Python versions Code style: black Checked with mypy CircleCI

Install codetiming from PyPI:

$ python -m pip install codetiming

The source code is available at GitHub.

For a complete tutorial on how codetiming works, see Python Timer Functions: Three Ways to Monitor Your Code on Real Python.

Basic Usage

You can use codetiming.Timer in several different ways:

  1. As a class:

    t = Timer(name="class")
    t.start()
    # Do something
    t.stop()
    
  2. As a context manager:

    with Timer(name="context manager"):
        # Do something
    
  3. As a decorator:

    @Timer(name="decorator")
    def stuff():
        # Do something
    

Arguments

Timer accepts the following arguments when it's created, all are optional:

  • name: An optional name for your timer
  • text: The text shown when your timer ends. It should contain a {} placeholder that will be filled by the elapsed time in seconds (default: "Elapsed time: {:.4f} seconds")
  • logger: A function/callable that takes a string argument, and will report the elapsed time when the logger is stopped (default: print())

You can turn off explicit reporting of the elapsed time by setting logger=None.

When using Timer as a class, you can capture the elapsed time when calling .stop():

elapsed_time = t.stop()

Named timers are made available in the class dictionary Timer.timers. The elapsed time will accumulate if the same name or same timer is used several times. Consider the following example:

>>> import logging
>>> from codetiming import Timer

>>> t = Timer("example", text="Time spent: {:.2f}", logger=logging.warning)

>>> t.start()
>>> t.stop()
WARNING:root:Time spent: 3.58
3.5836678670002584

>>> with t:
...     _ = list(range(100000000))
... 
WARNING:root:Time spent: 1.73

>>> Timer.timers
{'example': 5.312697440000193}

The example shows how you can redirect the timer output to the logging module. Note that the elapsed time spent in the two different uses of t has been accumulated in Timer.timers.

Acknowledgements

codetiming is based on a similar module originally developed for the Midgard Geodesy library at the Norwegian Mapping Authority.

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

codetiming-1.1.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

codetiming-1.1.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file codetiming-1.1.0.tar.gz.

File metadata

  • Download URL: codetiming-1.1.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for codetiming-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8355334d12db30d5f4d3d13a966f98d00eaab24bcfdfb6bf176e2e4e3c04d5ff
MD5 8fd9637c1f8d928bba1592ac75316eca
BLAKE2b-256 040da13850e96cdffc63274421a6f4355bcb0d533264c3c9fb63dd234b94d0ef

See more details on using hashes here.

File details

Details for the file codetiming-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: codetiming-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for codetiming-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b7ca083f5a678b973ffaf8d3ec2c1544da758f7b9313d27498496f5e4b9ec8f
MD5 ef0ec1a8c1765178701073873a28ae23
BLAKE2b-256 62ecf12520f540ba6d5c9c4ed1c5db8d0c1206d7dc8dc540666aa34749c6392a

See more details on using hashes here.

Supported by

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