Skip to main content

A flexible, customizable timer for your Python code

Project description

codetiming - A flexible, customizable timer for your Python code

Install codetiming from PyPI:

$ python -m pip install codetiming

The source code is available at GitHub.

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.

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-0.1.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

codetiming-0.1.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for codetiming-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2b6bbb58d27bbab23683784d2be491e2177d48914f297451712af64d8eafda5f
MD5 72d7ff671cc6405a3e1a044459d145ce
BLAKE2b-256 56f5262a5092e27563f3ccdc89cf4253a4d7f32bc80abe5bc748f47a8fbd6ade

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for codetiming-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99be55f9b6dfa94721cd80e1efae0c84542312304323fbb2545a949f5ec1d791
MD5 51049918cf6e583076b02c3ca9d75576
BLAKE2b-256 3faf1dc7400ff3f31f98ae4094e28336452294d5d4b0e1fe0e78523152e91a62

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