本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

Python 中简单实现定时任务的几种方式

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


死循环

from datetime import datetime
import time

if __name__ == "__main__":
    interval = 5
    while True:
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
        time.sleep(interval)

Timer 定时器

from datetime import datetime
from threading import Timer


def print_time(interval):
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    # 递归执行,在 interval 秒后执行 print_time 函数
    t = Timer(interval, print_time, (interval,))
    t.start()


if __name__ == "__main__":
    interval = 5
    print_time(interval)

schedule 调度

import sched
import time
from datetime import datetime

# 初始化 sched 模块的 scheduler 类
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
schedule = sched.scheduler(time.time, time.sleep)


# 被周期性调度触发的函数
def print_time(interval):
    print("print_time:\t", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    # 递归调用 print_time
    schedule.enter(interval, 0, print_time, (interval,))


def say_hello(interval):
    print("hello:\t", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    # 递归调用 print_time
    schedule.enter(interval, 0, say_hello, (interval,))


if __name__ == "__main__":
    # 执行间隔
    interval = 10
    print("begin:\t", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    # enter 函数的四个参数分别为:
    #   间隔时间
    #   优先级(用于同时间到达的两个事件同时执行时定序)
    #   被调用触发的函数句柄
    #   给该触发函数的参数(tuple 形式)
    # 首次执行在 5 秒后,传入 interval 参数执行 print_time 函数
    schedule.enter(5, 0, print_time, (interval,))
    # 首次执行在 5 秒后,传入 interval 参数执行 say_hello 函数
    schedule.enter(3, 0, say_hello, (interval,))
    schedule.run()

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×