在python中有点误会的定时器

时间:2009-12-21 23:00:30

标签: python timer

有人可以告诉我如何在我的代码中多次使用python中的这个类定时器。

import MOD

class timer:
    def __init__(self, seconds):
         self.start(seconds)
    def start(self, seconds):
         self.startTime = MOD.secCounter()
         self.expirationTime = self.startTime + seconds
         if seconds != 0:
            self.running = 1
            self.expired = 0
         else:  
            self.running = 0  
            self.expired = 0
    def stop(self):
         self.running = 0
         self.expired = 0
    def isexpired(self):
         if self.running == 1:  
            timeNow = MOD.secCounter()  
            if timeNow > self.expirationTime:    
               self.running = 0    
               self.expired = 1  
            else:    
               self.expired = 0
         return self.expired
    def isrunning(self):
         if self.running == 1:  
             timeNow = MOD.secCounter()  
             if timeNow > self.expirationTime:    
                self.running = 0    
                self.expired = 1  
             else:    
                self.expired = 0
         return self.running
    def change(self, seconds):
         self.expirationTime = self.startTime + seconds
    def count(self):
         if self.running == 1:  
            timeNow = MOD.secCounter()  
            return (timeNow - self.startTime)
         else:  
            return -1

他们写下这条评论:

以下是有关如何使用此类的简单示例:

    import timers
    timerA = timers.timer(0)
    timerA.start(15)
        while 1:  
            if timerA.isexpired():    
               print 'timerA expired'   
               break

但我不知道如何在我的代码中多次使用它,因为我需要在我的代码中使用多个计时器,

我应该写

    timerB = timers.timer(1)
    timerB.start(1800)
    while 1:  
        if timerB.isexpired():    
        print 'timerA expired'  
        break

任何帮助,请

1 个答案:

答案 0 :(得分:2)

关闭 - timers.timer的参数是计时器首先应该计时的秒数。但每次调用timers.timer()时,都会得到一个新的计时器实例。

所以你的代码看起来更像是:

  timerB = timers.timer(1800)
    while 1:  
        if timerB.isexpired():    
        print 'timerA expired'  
        break

除了这是误导性的 - timerA和timerB是单独的计时器,因此timerB.isexpired()不会告诉你有关timerA的任何信息。也许你的意思是读“timerB expired”?

我还建议反对如此迅速地进行民意调查timerB.isexpired()。也许每次检查后都会睡一会儿?