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 - pair
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.