Eine kleine Übung. Wenn Sie eine Funktion hinzufügen möchten, können Sie sie beliebig hinzufügen, dies ist jedoch zumindest nicht erforderlich. Das Problem mit Temp ist, dass die interne Verarbeitung etwas Zeit in Anspruch nimmt, es jedoch keine Motivation gibt, sie zu verbessern.
import time
class StopWatchLite(object):
def __init__(self) :
self.make = time.time()
return
def start(self) :
self.st = time.time()
return self
def stop(self) :
return time.time()-self.st
def reset(self) :
self.st = self.make
return self
def __str__(self) :
return str( self.stop() )
class StopWatchTemp(object):
"""
this can stop counting time temporally.
"""
def __init__( self, verbose=0) :
self.make = time.time()
self.stac = []
self.stat = "standby"
self.verbose = verbose
return
def start(self) :
self.stac = []
self.stat = "running"
self.st = time.time()
return self
def stop(self) :
(self.stac).append( time.time() - self.st )
self.stat = "stopped"
return sum( _ for _ in self.stac )
def reset(self) :
self.st = self.make
self.stat = "standby"
self.stac = []
return self
def restart(self) :
if self.stat == "stopped" :
self.stat = "running"
self.st = time.time()
elif self.stat == "standby" :
if self.verbose >= 2 :
print "start->stop->restart"
if self.verbose >= 1 :
print "regarding 'restart' as 'start'."
return self.start()
elif self.stat == "running" :
if self.verbose >= 2 :
print "start->stop->restart"
if self.verbose >= 1 :
print "regarding 'restart' as 'reset' and 'start'."
return self.reset().start()
def __str__(self) :
return str( stop() )
def test():
def wast_function(n):
[ i for i in xrange(n) ]
s = StopWatchLite()
s.start()
wast_function(1000000)
t1 = s.stop()
s.start()
wast_function(1000000)
t2 = s.stop()
print t1,t2
s = StopWatchTemp()
s.start()
wast_function(1000000)
s.stop()
s.restart()
wast_function(1000000)
t1 = s.stop()
print t1
if __name__ == "__main__" :
test()