sched
定时任务模块
# coding:utf8
import time
import sched
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
# 一般情况就使用time.time, time.sleep即可
s = sched.scheduler(time.time, time.sleep)
# 获取时间戳的函数 2020-09-16 19:03:01
def get_time():
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
# 准备执行的任务
def print_time(task_id):
print(task_id,get_time())
def main():
print("start", get_time())
# enter,第一个参数是x秒后执行,第二个参数是优先级(0优先级最高),第三个是要执行的函数,第四个是函数参数
s.enter(10, 1, print_time, (0,))
s.enter(5, 2, print_time, (1,))
s.enter(5, 1, print_time, (2,))
print("---")
s.run() # 阻塞住,等到定时任务执行完毕。
print("---")
print("end", get_time())
if __name__ == "__main__":
main()
以上设置定时任务,但这个任务不是周期性的执行,如果想周期性执行,我们可以利用递归的思想
import time
import sched
s = sched.scheduler(time.time, time.sleep)
# 获取时间戳的函数 2020-09-16 19:03:01
def get_time():
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
# 准备执行的任务
def print_time(task_id, cycle_time):
print(task_id,get_time())
s.enter(cycle_time, 0 , print_time, (task_id,cycle_time))
def main():
s.enter(0, 0, print_time, ("周期任务ID",1))
s.run()
if __name__ == "__main__":
main()
还有可用的第三方库,schedule库
https://blog.csdn.net/sunt2018/article/details/108590070