How to measure time taken between lines of code in python? How to measure time taken between lines of code in python? python python

How to measure time taken between lines of code in python?


If you want to measure CPU time, can use time.process_time() for Python 3.3 and above:

import timestart = time.process_time()# your code here    print(time.process_time() - start)

First call turns the timer on, and second call tells you how many seconds have elapsed.

There is also a function time.clock(), but it is deprecated since Python 3.3 and will be removed in Python 3.8.

There are better profiling tools like timeit and profile, however time.process_time() will measure the CPU time and this is what you're are asking about.

If you want to measure wall clock time instead, use time.time().


You can also use time library:

import timestart = time.time()# your code# endprint(f'Time: {time.time() - start}')


With a help of a small convenience class, you can measure time spent in indented lines like this:

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

UPDATE: You can now get the class with pip install linetimer and then from linetimer import CodeTimer. See this GitHub project.

The code for above class:

import timeitclass CodeTimer:    def __init__(self, name=None):        self.name = " '"  + name + "'" if name else ''    def __enter__(self):        self.start = timeit.default_timer()    def __exit__(self, exc_type, exc_value, traceback):        self.took = (timeit.default_timer() - self.start) * 1000.0        print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')

You could then name the code blocks you want to measure:

with CodeTimer('loop 1'):   for i in range(100000):      passwith CodeTimer('loop 2'):   for i in range(100000):      passCode block 'loop 1' took: 4.991 msCode 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):      passCode block 'Inner' took: 2.382 msCode block 'Outer' took: 10.466 ms

Regarding timeit.default_timer(), it uses the best timer based on OS and Python version, see this answer.