[PYTHON] Chronomètre

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()

Recommended Posts

Chronomètre
C'est un chronomètre