-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathstopwatch.py
executable file
·69 lines (47 loc) · 1.77 KB
/
stopwatch.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import time
class Stopwatch:
def __init__(self, message=None):
self.initialised = False
self.startTime = time.time()
self.lastLapTime = time.time()
self.pauseStartTime = None
self.pauseDuration = 0
self.totalPauseDurationInRun = 0
self.runTimes = []
if message is not None:
self.lap(message)
def __getTotalRunTime(self):
currentTime = time.time()
return currentTime - self.startTime - self.totalPauseDurationInRun
def lap(self, message):
currentTime = time.time()
lapTime = currentTime - self.lastLapTime - self.pauseDuration
print "%.2f\t%.2f\t%s" %(self.__getTotalRunTime(), lapTime, message)
self.lastLapTime = currentTime
self.pauseStartTime = None
self.pauseDuration = 0
def pause(self):
self.pauseStartTime = time.time()
def unpause(self):
if self.pauseStartTime is not None:
currentTime = time.time()
self.pauseDuration += currentTime - self.pauseStartTime
self.totalPauseDurationInRun += currentTime - self.pauseStartTime
self.pauseStartTime = None
def endRun(self):
self.runTimes.append(self.__getTotalRunTime())
average = sum(self.runTimes) / (len(self.runTimes))
print "average time: %.2f" %average
print
self.pauseStartTime = None
self.pauseDuration = 0
self.totalPauseDurationInRun = 0
def reset(self, message="reset"):
if not self.initialised:
self.initialised = True
self.pauseStartTime = None
self.pauseDuration = 0
self.totalPauseDurationInRun = 0
self.startTime = time.time()
self.lastLapTime = time.time()
self.lap(message)