ちょっとした練習問題。機能を付け加えようと思ったら、どこまでも付け加えられますが、必要ないので、最低限。
Tempの方は内部処理にちょっと時間がかかるのが問題だけど、改善するモチベーションがないw
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()