如何利用Python实现定时程序
如何利用Python实现定时程序
本篇内容主要讲解“如何利用Python实现定时程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用Python实现定时程序”吧!
定时器概念
什么是定时器呢?它是指从指定的时刻开始,经过一个指定时间,然后触发一个事件,用户可以自定义定时器的周期与频率。
实现一个简单的定时程序
方案一
在 Python 中,如何定义一个定时器函数呢?我们先看第一种方法。假设我们需要执行一个函数userCountFunc,这个函数需要每隔一个小时被执行一次。那么,我们可以这样写:
defmain():startCronTask(userCountFunc,minutes=60)if__name__=="__main__":main()
如上面的代码,我们在定义了一个 main 函数后,便定义了一个定时函数 startCronTask。第一个参数为函数名,第二个参数为时间,第二个参数表示多长时间后调用后面第一个参数的函数。第一个参数注意是函数对象,进行参数传递,用函数名(如 userCountFunc)表示该对象,不是函数执行语句 userCountFunc(),不然会报错。那么,在实现这个函数时,需要引入定时功能,Python 中有一个定时任务模块 BlockingScheduler:
fromapscheduler.schedulers.blockingimportBlockingSchedulerdefstartCronTask(task,**config):#BlockingSchedulerscheduler=BlockingScheduler()scheduler.add_job(task,"interval",**config)scheduler.start()
定义完一个调度模块之后,实际的定时调度功能就完成了。接下来,需要具体实现定时执行的逻辑函数 userCountFunc:
defuserCountFunc():logger.info("countuser")...
这样,对于方案一,实现的简单的定时功能就完成了。
方案二
方案一中介绍的是 Python 自带的 BlockingScheduler 模块,Python 中除了可以通过 BlockingScheduler,还通过线程实现定时器 timer,来简单的看下代码:
importthreadingdeftimerFunc():print("HelloWorld~")timer=threading.Timer(1,timerFunc)timer.start()
在上面的代码中,定时器函数 threading.Timer 主要有2个参数,参数意义与方案一类似,接下来执行这段程序:
Hello World~
Process finished with exit code 0
我们发现只执行一遍,程序就结束了,但显然不是我们想要的结果。其实,我们看下 Time 类,有这样的一句解释性注释:Call a function after a specified number of seconds,我们发现上面在执行后并未循环执行,所以需要修改下:
importthreadingdeftimerFunc():print("HelloWorld~")globaltimertimer=threading.Timer(10.5,timerFunc)timer.start()timer=threading.Timer(3,timerFunc)timer.start()
此时,我们可以看到输出结果:
Hello World~
Hello World~
Hello World~
...
这里需要注意的是:必须在定时器执行函数内部重复构造定时器,因为定时器构造后只执行1次,必须循环调用。
另外,在上面的代码中,我们其实还可以看到:threading.Timer(5.5, timerFunc),定时器间隔单位是秒,可以是浮点数,如5.5,0.9等,在执行函数 timerFunc 内部和外部中给的值可以不同。如上例中第一次执行 timerFunc 是3秒后,后面的都是10.5秒后执行。
接下来,我们再看看如何再一定时间结束定时功能。我们可以使用cancel停止定时器的工作,如下例:
importthreadingdeftimerFunc():print("HelloWorld~")globaltimertimer=threading.Timer(10.5,timerFunc)timer.start()timer=threading.Timer(3,timerFunc)timer.start()time.sleep(60)timer.cancel()
上面的代码表示:在定时器按照一定时间执行后,执行过程耗时60秒后停止定时操作功能,退出。显示结果为:
Hello World~
Hello World~
Hello World~
Hello World~
Hello World~
...Process finished with exit code 0
到此,相信大家对“如何利用Python实现定时程序”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...
-
Python如何利用D3Blocks绘制可动态交互的图表
-
2021年度编程语言揭晓
-
PPython:PHP 拥抱 Python 的利器
-
哪种Python IDE最适合你?这里有一份优缺点列表
-
Python分隔字符串函数用法split
aaa,bbb=str.split(‘&&’,2)第一个参数为分隔符第二个参数是要完成的最大拆分数...
-
php安全编程——python测试实例编写
-
神奇的Python模块:pdfkit,将Python抓取的网址内容保存pdf文件