死循环
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()
评论区