关于Python中定时器的小误解
有人能告诉我怎么在我的代码中多次使用这个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 个回答
2
关闭 - timers.timer的参数是定时器最开始应该计时的秒数。但是每次你调用timers.timer()时,都会得到一个新的定时器实例。
所以你的代码可以写成这样:
timerB = timers.timer(1800)
while 1:
if timerB.isexpired():
print 'timerA expired'
break
不过这样有点误导 - timerA和timerB是两个独立的定时器,所以timerB.isexpired()
并不能告诉你timerA的状态。也许你是想说“timerB到期了”?
我还建议不要这么频繁地检查timerB.isexpired()
。可以在每次检查后暂停一秒钟吗?