文章内容
2018/9/13 12:26:34,作 者: 黄兵
python 如何定时执行一个任务
最近要做一个爬虫,每10分钟执行一次抓取任务,既然是做爬虫,那肯定是python莫属了。
在python中可以使用:hreading.Timer方法创建一个定时器
class threading.Timer(interval, function, args=[], kwargs={})创建一个timer,在interval秒过去之后,它将以参数args和关键字参数kwargs运行function 。
调用该函数回返回一个定时器的句柄,同时也获得了一个定时器实例。
但是这时,定时器只是被创建,被没有启动,需要调用实例里面的
start()方法启动定时器。如果在定时过程中想要取消该定时器,需要使用cancel()函数。
具体代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import threading
from urllib.request import urlopen
from bs4 import BeautifulSoup
def time_handler():
html=urlopen("http://rss.pdflibr.com/jianshu/home.json")
bsObj=BeautifulSoup(html.read())
print(bsObj)
global timer
timer = threading.Timer(5, time_handler)
timer.start()
if __name__ == '__main__':
time_handler()程序看起来很简单,通过在回调函数里面,重新创建定时器,来使得定时器能够一直工作。
但是值得注意的是,定时器的句柄需要定义成为一个全局变量,这样做的好处是,创建的定时器进程和实例不会堆积,而是覆盖,避免不必要的内存占用。
另外利用threading创建的定时器还有一个好处是,每一个定时器的创建都是在一个新的进程里面,所以定时器是不阻塞式的。
最后看看结果:

参考资料:python 定时器
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - python 如何定时执行一个任务
评论列表