会飞的狼

python编程爱好者

单次定时器和多次循环定时器示例

Python中通过线程实现定时器timer,其使用非常简单。看示例:
在使用Python定时器时需要注意如下4个方面:
(1)定时器构造函数主要有2个参数,第一个参数为时间,第二个参数为函数名,第一个参数表示多长时间后调用后面第二个参数指明的函数。第二个参数注意是函数对象,进行参数传递,用函数名(如fun_timer)表示该对象,不能写成函数执行语句fun_timer(),不然会报错。用type查看下,可以看出两者的区别。

print(type(fun_timer()))
print(type(fun_timer))

结果为:

<class 'NoneType'>
<class 'function'>

(2)必须在定时器执行函数内部重复构造定时器,因为定时器构造后只执行1次,必须循环调用。
(3)定时器间隔单位是秒,可以是浮点数,如5.5,0.02等,在执行函数fun_timer内部和外部中给的值可以不同。如上例中第一次执行fun_timer是1秒后,后面的都是5.5秒后执行。
(4)可以使用cancel停止定时器的工作.timer.cancel()
1. 单次定时器和多次循环定时器示例

import threading
import time
#Timer(定时器)是Thread的派生类,
#用于在指定时间后调用一个方法。
'''
def func():
    print 'hello timer!'
timer = threading.Timer(2, func)
timer.start()  ####threads can only be started once
'''
----------
上面代码简单的展示了运行程序后,隔了2s调用函数func()打印 hello timer!
只打印一次。下面的程序为循环打印Hello Timer!和程序运行时间的程序。
----------

def fun_timer():
#    print('Hello Timer!')
    print 'Hello Timer! %s'%(time.clock())
    global timer
    timer = threading.Timer(2, fun_timer)
    timer.start()

timer = threading.Timer(2, fun_timer)
timer.start()
while 1:
    time.sleep(1)
    print '22 , %s'%(time.clock())

运行后有如下结果:

22 , 0.0
Hello Timer! 0.998539092087
22 , 1.00059164495
22 , 2.00159345914
Hello Timer! 2.99951530625
22 , 3.00176469484
22 , 4.00238876648
Hello Timer! 4.99995050662
22 , 5.00295651808
22 , 6.00306858929
Hello Timer! 6.99948515512
22 , 7.00358058972
22 , 8.00363463421
Hello Timer! 8.99967630195
22 , 9.00376604766
22 , 10.0038343144
Hello Timer! 11.0003163025
22 , 11.004206368
22 , 12.0043201459
Hello Timer! 13.0000273067
22 , 13.005121711
22 , 14.0053196845
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bl136823/article/details/80348667
文章标签: python timer
个人分类: python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

单次定时器和多次循环定时器示例

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭