1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ストップウォッチ

Last updated at Posted at 2013-08-14

ちょっとした練習問題。機能を付け加えようと思ったら、どこまでも付け加えられますが、必要ないので、最低限。
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()
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?