Python实现定时器

来自CloudWiki
27.201.193.198讨论2020年8月6日 (四) 14:21的版本 (创建页面,内容为“ == Python实现定时器 == 在Linux下的任务调度分为两类:系统任务调度、用户任务调度 系统任务调度:系统周期性所要执行的工…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

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