linetimer: A small Python class to measure the time taken by indented lines.
linetimer is a small Python class to quickly measure the time taken by a block of indented lines
To install the library, simply type in
pip install linetimer in your terminal.
The basic usage is:
from linetimer import CodeTimer with CodeTimer(): line_to_measure() another_line() # etc...
Which will show the following after the indented line(s) finishes executing:
Code block took: x.xxx ms
You can also name the code blocks you want to measure:
with CodeTimer('loop 1'): for i in range(100000): pass with CodeTimer('loop 2'): for i in range(100000): pass Code block 'loop 1' took: 4.991 ms Code block 'loop 2' took: 3.666 ms
And nest them:
with CodeTimer('Outer'): for i in range(100000): pass with CodeTimer('Inner'): for i in range(100000): pass for i in range(100000): pass Code block 'Inner' took: 2.382 ms Code block 'Outer' took: 10.466 ms
To get the time taken in different units, use the
with CodeTimer('Block', unit='h'): slow_function() Code block 'Block' took: 2.382 h
Supported units are ms, s , m, h corresponding to milliseconds, seconds, minutes, hours.
If you need to retain the time taken, you can do it with:
ct = CodeTimer() with ct: slow_function() ct.took # This contains the time taken as per the unit provided (milliseconds by default)
Sometimes you want to use your own dedicated logger, you can do it with:
import logging my_logger = logging.get_logger('xyz') with CodeTimer('Block', unit='h', logger_func = my_logger.info): slow_function()
This will log to an appropriate handler,
INFO - Code block 'Block' took: 2.382 h
If you need to turn off the printed statements, use the
with CodeTimer(silent=True): slow_function() # There will be no printed output
You can also use function decorator syntax, like this:
from linetimer import linetimer @linetimer() def my_function(a, b): pass my_function('a', 'b') >>> Code block 'my_function' took x.yz ms @linetimer(show_args=True) # will print function parameters def my_function(a, b): pass my_function('a', b='b') >>> Code block 'my_function('a', b='b') took x.yz ms
If you like this package, upvote it on StackOverflow.
If you encounter a problem, create an issue on Github.