Tracking code performance easily.
Project description
Timer
An easy to use python package to handle time measurements in code.
Instantiate the Timer
class and insert one-liners with take_time()
between your existing code to take timestamps.
Call the fancy_print()
function to print a nicely formatted overview of how much time has passed overall, how much time has passed between the take_time()
calls, including percentage per step and passed step-descriptions.
Installation
The package is available on PyPi :
pip install quicktimer
Usage
The entire functionality is documented in-depth on readthedocs. In the following a quick overview of the basic functionality is shown.
The two main commands are take_time()
and fancy_print()
.
Both can be used without any parameters, although you should pass at least a description to take_time("Finished_x!")
to add some context to your measurements.
You can either make use of the default output method (print
to the console) or you can pass a custom function: for instance to pass the messages to a logger.
Using the default output method (print)
When no output_func
parameter is passed during instantiation, it defaults to print
the messages to the console as follows:
import time
from quicktimer import Timer
T = Timer()
# take the starting time
T.take_time(description="The description of the first function-call is not displayed!")
time.sleep(1.1) # code substitute: parsing the data
T.take_time("Parsed the data")
time.sleep(0.02) # code substitute
T.take_time()
time.sleep(0.1) # code substitute: Storing the data
T.take_time("Stored the data", True)
T.fancy_print()
Output of the code in the console:
> Stored the data
> ------ Time measurements ------
> Overall: 0:00:01.254049
> Step 0: 0:00:01.113962 - 88.83 % - Description: Parsed the data
> Step 1: 0:00:00.030001 - 2.39 % - Description:
> Step 2: 0:00:00.110086 - 8.78 % - Description: Stored the data
Using a logger as output method
Instead of printing
to the console, you can also pass your own function to the module.
This can be used with an easily configured logger
to write the messages to your log.
import time
import logging
from quicktimer import Timer
# setting up a logger
my_format = "%(asctime)s [%(levelname)-5.5s] %(message)s"
logging.basicConfig(filename='test.log', level=logging.INFO, format=my_format)
logger = logging.getLogger()
# logger.info will be used as the output function instead of print
T = Timer(output_func=logger.info)
T.take_time() # take the starting time
time.sleep(0.5) # code substitute: parsing the data
T.take_time("Parsed the data")
time.sleep(0.1) # code substitute: Storing the data
T.take_time("Stored the data", True)
T.fancy_print()
Your log would look like this:
2021-06-24 13:35:43,275 [INFO ] Stored the data
2021-06-24 13:35:43,275 [INFO ] ------ Time measurements ------
2021-06-24 13:35:43,275 [INFO ] Overall: 0:00:00.624691
2021-06-24 13:35:43,275 [INFO ] Step 0: 0:00:00.512639 - 82.06 % - Description: Parsed the data
2021-06-24 13:35:43,275 [INFO ] Step 1: 0:00:00.112052 - 17.94 % - Description: Stored the data
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
File details
Details for the file quicktimer-0.2.0.tar.gz
.
File metadata
- Download URL: quicktimer-0.2.0.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57c67ae359a6a3ce17ce14ec41de729b0521d2759781512b5f9246e0e6dbe97e |
|
MD5 | cd17d17beb247b7bdf776c4fda87b0e5 |
|
BLAKE2b-256 | 555b3f9bbd640dc6a22c246eb21f3ff67e008b165a809600f4338460a5864297 |
File details
Details for the file quicktimer-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: quicktimer-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2691aa2b1e85ae784b91d51b6dc563b0865bd8620866aecce3eee8226efc2f38 |
|
MD5 | adde2963a0d2331749c5d493434cacfc |
|
BLAKE2b-256 | d21c528cd35d66ca799afb0e89f49e8bd68017c5b662127c0c7da526ec8e1398 |