下面介绍以threading模块来实现定时器的方法。 使用前先做一个简单试验:
import threading |
---|
def sayhello(): |
---|
print "hello world" |
---|
global t #Notice: use global variable! |
---|
t = threading.Timer(5.0, sayhello) |
---|
t.start() |
---|
t = threading.Timer(5.0, sayhello) |
---|
t.start() |
---|
#该代码片段来自于: http://www.sharejs.com/codes/python/8815 |
---|
运行结果如下
>python hello.py |
---|
hello world |
---|
hello world |
---|
hello world |
---|
下面是定时器类的实现:
class Timer(threading.Thread): |
---|
""" |
---|
very simple but useless timer. |
---|
""" |
---|
def __init__(self, seconds): |
---|
self.runTime = seconds |
---|
threading.Thread.__init__(self) |
---|
def run(self): |
---|
time.sleep(self.runTime) |
---|
print "Buzzzz!! Time's up!" |
---|
class CountDownTimer(Timer): |
---|
""" |
---|
a timer that can counts down the seconds. |
---|
""" |
---|
def run(self): |
---|
counter = self.runTime |
---|
for sec in range(self.runTime): |
---|
print counter |
---|
time.sleep(1.0) |
---|
counter -= 1 |
---|
print "Done" |
---|
class CountDownExec(CountDownTimer): |
---|
""" |
---|
a timer that execute an action at the end of the timer run. |
---|
""" |
---|
def __init__(self, seconds, action, args=[]): |
---|
self.args = args |
---|
self.action = action |
---|
CountDownTimer.__init__(self, seconds) |
---|
def run(self): |
---|
CountDownTimer.run(self) |
---|
self.action(self.args) |
---|
def myAction(args=[]): |
---|
print "Performing my action with args:" |
---|
print args |
---|
if __name__ == "__main__": |
---|
t = CountDownExec(3, myAction, ["hello", "world"]) |
---|
t.start() |
---|
#该代码片段来自于: http://www.sharejs.com/codes/python/8815 |
---|
以上代码在Python 2.5.4中运行通过
以上代码在Python 2.5.4中运行通过 |
---|