Package pyvision :: Package analysis :: Module Timer
[hide private]
[frames] | no frames]

Source Code for Module pyvision.analysis.Timer

 1  import time 
 2  import pyvision as pv 
 3   
4 -class Timer:
5 ''' 6 A simple timer class used to measure and record run times. Each timer has a 7 member variable named table which keeps a log of timing data. 8 9 Usage: 10 timer = pv.Timer() 11 12 ... Do Some Stuff ... 13 14 timer.mark("Event 1") 15 16 ... Do Some Stuff ... 17 18 timer.mark("Event 2") 19 20 print timer 21 -- or -- 22 ilog(timer,"TimingData") 23 24 ''' 25
26 - def __init__(self):
27 ''' 28 Create and setup the timer. Also creates a mark titled "Timer Created". 29 ''' 30 self.table = pv.Table() 31 self.started = False 32 self.i = 0 33 self.mark("Timer Created")
34
35 - def mark(self,event,notes=None):
36 ''' 37 38 @param event: a short text description of the event being marked. 39 @param notes: additional notes for this event. 40 @returns: 6-tuple of times in seconds: Wall Clock Time, Time since last mark, Time since creation, CPU time, CPU time since last mark, CPU time since creation 41 ''' 42 current = time.time() 43 cpu = time.clock() 44 if self.started == False: 45 self.started = True 46 self.prev = self.start = current 47 self.cpu_prev = self.cpu_start = cpu 48 self.table[self.i,"event"] = event 49 self.table[self.i,"time"] = current 50 self.table[self.i,"current"] = current - self.prev 51 self.table[self.i,"total"] = current - self.start 52 self.table[self.i,"cpu_time"] = cpu 53 self.table[self.i,"cpu_current"] = cpu - self.cpu_prev 54 self.table[self.i,"cpu_total"] = cpu - self.cpu_start 55 self.table[self.i,"notes"] = notes 56 57 rt = current 58 ct = current - self.prev 59 tot = current - self.start 60 crt = cpu 61 cct = cpu - self.cpu_prev 62 ctot = cpu - self.cpu_start 63 64 self.prev = current 65 self.cpu_prev = cpu 66 self.i += 1 67 68 return rt,ct,tot,crt,cct,ctot
69
70 - def __str__(self):
71 '''Render the timing log to a string.''' 72 73 return self.table.__str__()
74
75 - def save(self,filename):
76 '''Save the timing log to a csv file.''' 77 self.table.save(filename)
78