A class for timing code (start/stop, context manager, decorator).
Project description
A class for timing code. A Stopwatch object can be used as:
from et_stopwatch import Stopwatch stopwatch = Stopwatch() # create and start the stopwatch sleep(1) stopwatch.stop() print(stopwatch) stopwatch : 1.003744 s
Use as a context manager, with a custom message:
with Stopwatch(message='This took') as sw: for i in range(3): sleep(1) print(i, sw.stop(), 's') # stop() returns the time since the last call to start|stop in seconds 0 1.004943 1 1.004948 2 1.003404 This took : total : 3.0132949999999994 s minimum: 1.003404 s maximum: 1.004948 s mean : 1.004432 s stddev : 0.000727 s count : 3
Since stop was called more than once, some statistics are printed. Calling stop automatically restarts the stopwatch and as a consequence the stopwatch also measures the overhead of the iteration over i. To avoid this, explicitly call start:
with Stopwatch(message='This took') as sw: for i in range(3): sw.start() sleep(1) print(i, sw.stop(), 's') # stop() returns the time since the last call to start|stop in seconds 0 1.004388 1 1.004173 2 1.003048 This took : total : 3.011609 s minimum: 1.003048 s maximum: 1.004388 s mean : 1.00387 s stddev : 0.000588 s count : 3
This time, the timing are slightly shorter for each iteration.
Use as decorator, with a custom message and custom number of digits printed:
@Stopwatch(name="say_hi_and_sleep_two_seconds", ndigits=3) def say_hi_and_sleep_two_seconds(): print("hi") sleep(2) say_hi_and_sleep_two_seconds() hi say_hi_and_sleep_two_seconds : 2.003 s
Free software: MIT license
Documentation: https://et-stopwatch.readthedocs.io.
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 et_stopwatch-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2658b58c9656b4285c3264f07a177afc173eb37f8d63f6b612005232ca65af4 |
|
MD5 | 516a4a4d0a1bbd0cc4fa04dd3f8b6773 |
|
BLAKE2b-256 | cbe4ea2a2b97fface6602bea75c02f79b15341126e484d967b4b59adeda3c531 |