一文详解Python定时任务触发
概述
定时任务,顾名思义就是在指定的时间点或时间间隔内执行一些任务。在Python中,我们可以使用多种方式来实现定时任务触发。本文将详细介绍Python中两种常用的定时任务触发机制:time.sleep()
和sched
模块,以及其用法。
time.sleep()实现定时任务
time.sleep()方法可以让程序暂停指定的时间,实现定时任务的效果。例如以下代码可以每隔5秒输出一次当前时间:
import time
while True:
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
time.sleep(5)
上述代码中,我们使用了time
模块中的strftime()
方法获取当前时间,并将其格式化输出。然后使用time.sleep(5)
方法让程序等待5秒,再次输出当前时间。这样就实现了每隔5秒输出当前时间的定时任务。
sched模块实现定时任务
sched模块是Python自带的一个任务调度模块。它可以用来实现更加精细的定时任务,例如指定任务开始时间、结束时间、循环次数等。以下代码可以在指定时间(例如2021年1月1日5点30分)触发定时任务:
import sched
import time
# 初始化scheduler
s = sched.scheduler(time.time, time.sleep)
def do_something_in_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "Time's up!")
# 设置触发时间
trigger_time = time.strptime("2022-01-01 05:30:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(trigger_time)
# 设置触发事件
s.enterabs(timestamp, 1, do_something_in_time, ())
# 运行scheduler
s.run()
上述代码中,我们初始化了一个scheduler,然后定义了一个在指定时间输出文字的任务函数。接着我们将任务函数放入scheduler中,指定触发事件的时间为2022年1月1日5点30分,并运行scheduler,函数会在指定时间执行。
示例
以下是一个定时任务示例:每天定时发送一条微博。我们可以使用sched
模块和time
模块来实现。示例代码如下:
import sched
import time
# 模拟微博发送
def send_weibo():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "Weibo sent!")
# 初始化scheduler
s = sched.scheduler(time.time, time.sleep)
# 设置微博发送时间
send_time = "13:30:00"
while True:
# 获取当前时间
t = time.strftime("%H:%M:%S", time.localtime())
if t == send_time:
# 计算下一次微博发送时间
next_send_time = time.localtime(time.time() + 86400)
next_send_time = time.strftime("%Y-%m-%d", next_send_time) + " " + send_time
next_send_time = time.mktime(time.strptime(next_send_time, "%Y-%m-%d %H:%M:%S"))
# 将发送微博任务加入scheduler
s.enterabs(next_send_time, 1, send_weibo, ())
# 运行scheduler
s.run()
以上代码中,我们定义了一个send_weibo()
函数来模拟微博发送,然后在程序中设置微博发送时间为每天13:30。程序会每隔一天在指定时间调用send_weibo()
函数发送微博。
总结
本文介绍了Python中两种常用的定时任务触发机制:time.sleep()
和sched
模块,通过示例来演示了它们的使用,希望能对读者理解和掌握Python中的定时任务功能有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文详解Python定时任务触发 - Python技术站