Skip to main content

TimeMarker class for python

We give a simple class for marking the time at different points in a code block and then printing out the time gaps between adjacent marked points. This is useful for identifying slow spots in code.

The TimeMarker class

In the past, whenever I needed to speed up a block of python code, the first thing I would do was import the time package, then manually insert a set of lines of the form t1 = time.time() , t2 = time.time() , etc. Then at the end, print t2 - t1, t3 -t2, ... , etc. This works reasonably well, but I found it annoying and time consuming to have to save each time point to a different variable name. In particular, this prevented quick copy and paste of the time marker line. I finally thought to fix it this evening: Behold the TimeMarker class, which solves this problem for me:

import time

class TimeMarker():

    def __init__(self):
        self.markers = []

    def mark(self):
        self.markers.append(time.time())

    def print_markers(self):
        for pair in zip(self.markers, self.markers[1:]):
            print pair[1] - pair[0]

Here is a simple code example:

tm = TimeMarker()

tm.mark()
sum(range(10 ** 2))
tm.mark()
sum(range(10 ** 6))
tm.mark()

tm.print_markers()
# (output...)
# 7.9870223999e-05
# 0.0279731750488

The key here is that I can quickly paste the tm.mark() repeatedly throughout my code and quickly check where the slow part sits.