Python 3.X 中定时器(Timer)的使用
来源:互联网 发布:上海圣约翰大学 知乎 编辑:程序博客网 时间:2024/06/01 22:01
前段时间用Python实现了一个网络爬虫(让大蛇(Python)帮你找工作),效率总体还可以,但是缺点就是每次都需要手动的去触发,于是打算对该爬虫加上Timer,经过网上一番搜索以及API的查询,发现Python自身的API在这方面没有很好支持.
在这种情况下要使用Timer功能,除了第三方的模块外,可以通过使用标准库为我们提供的sched模块和Timer类。这两个类也只能算是用来现实Timer的工具类,而不能算是真正的Timer.下面对这两种类如何实现Timer做个简单的演示
(1)sched
准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。
'''使用sched模块实现的timer,sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法Created on 2013-7-31@author: Eric'''import time, sched#被调度触发的函数def event_func(msg): print("Current Time:", time.strftime("%y-%m-%d %H:%M:%S"), 'msg:', msg)def run_function(): #初始化sched模块的scheduler类 s = sched.scheduler(time.time, time.sleep) #设置一个调度,因为time.sleep()的时间是一秒,所以timer的间隔时间就是sleep的时间,加上enter的第一个参数 s.enter(0, 2, event_func, ("Timer event.",)) s.run()def timer1(): while True: #sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法 time.sleep(1) run_function()if __name__ == "__main__": timer1()
(2)Timer
Timer类也是一次性触发的,思路和sched大概差不多
'''Created on 2013-7-31@author: Eric'''import timeimport threadingdef timer_start(): t = threading.Timer(1, test_func, ("Parameter1",)) t.start()def test_func(msg1): print("I'm test_func,", msg1) timer_start()def timer2(): timer_start() while True: time.sleep(1)if __name__ == "__main__": timer2()
虽然说上面的两种现实看起来都很蠢,但是如果不借助第三方的库,可能也只能这样了.
- Python 3.X 中定时器(Timer)的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- JAVA中定时器Timer的使用
- Swing中Timer定时器的使用
- java中Timer定时器的使用
- linux中定时器timer的使用
- Android中Timer定时器的使用
- C#中定时器timer的使用
- java中Timer定时器的使用
- Java中Timer定时器的使用
- Boost中定时器(timer)的使用
- timer 定时器的使用
- Timer定时器的使用
- 定时器Timer的使用
- Timer 定时器的使用
- timer定时器的使用
- ios常见的几种传值方式
- 从程序员到项目经理(24):慎于问敏于行
- FFMPEG源码分析
- Tomcat_JVM生产模式配置详细说明
- 同步传输/异步传输
- Python 3.X 中定时器(Timer)的使用
- android 面试准备基础题
- 超详细单机版搭建hadoop环境图文解析
- Linux下分割合并文件
- FFMPEG中的一些基本概念
- IOS基础开发二(iphone计算器)
- Eclipse常用插件
- 深入浅出FFMPEG(二) SDK version 0.11
- TQ210开发板-led驱动