Python实现定时器
Python实现定时器
在Linux下的任务调度分为两类:系统任务调度、用户任务调度
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。etc/crontab文件,系统任务调度的配置文件。 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。
无限循环执行法:设定相隔时间重复执行
#coding:utf-8 #编码格式为utf8 import threading #导入threading模块 def sayhello(): #创建函数 print("hello world") #打印helloworld global t t = threading.Timer(2.0,sayhello) t.start() t = threading.Timer(2.0,sayhello) #相隔两秒 t.start()
解析:我们使用的threading 模块去实现,所以我们导入了这个模块。然后我们简 单的去定义了一个sayhello的方法。同时定义了一个全局变量为t,用来实现threa ding模块的时间间隔。(如果不使用global 这个关键字的话会造成线程堆积最终程序 退出)
延迟调用实现倒数计时器
#coding:utf8 import threading def abc(): print("这是abc的方法") timer = threading.Timer(5,abc) timer.start()
用threading模块去实现,通过延迟调用来实现倒数。
APScheduler模块实现定时器
Python的apscheduler提供了非常丰富而且方便易用的定时任务接口。apscheduler使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,我们可以 在主程序的运行过程中快速增加新作业或删除旧作业,如果把作业存储在数据库中,那么作业的状态会被保存,当调度器重启时,不必重新添加作业,作业会恢复原状态继续执行。
apscheduler可以当作-一个跨平台的调度工 具来使用,可以作为linux系统crontab工具或windows计划任务程序的替换。注意,apscheduler 不是一个守护进程或服务, 它自身不带有任何命令行工具。它主要是要在现有的应用程序中运行,也就是说,apscheduler为我们提供了构建专用调度器或调度服务的基础模块。
通过pip安装apscheduler模块: pip install apscheduler 或者 pip-3 install apscheduler