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.
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:
-
As a class:
t = Timer(name="class") t.start() # Do something t.stop()
-
As a context manager:
with Timer(name="context manager"): # Do something
-
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 timertext
: 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for codetiming-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b7ca083f5a678b973ffaf8d3ec2c1544da758f7b9313d27498496f5e4b9ec8f |
|
MD5 | ef0ec1a8c1765178701073873a28ae23 |
|
BLAKE2b-256 | 62ecf12520f540ba6d5c9c4ed1c5db8d0c1206d7dc8dc540666aa34749c6392a |