Un peu d'exercice. Si vous souhaitez ajouter une fonction, vous pouvez l'ajouter autant que vous le souhaitez, mais ce n'est pas nécessaire, du moins. Le problème avec Temp est que le traitement interne prend un peu de temps, mais il n'y a aucune motivation pour l'améliorer.
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()