Python 定时执行函数
Python中的定时执行函数。我们将会介绍如何使用time和sched模块来实现定时任务。让我们开始吧!
使用time.sleep实现简单定时
首先,让我们看看如何使用time.sleep函数实现简单的定时任务。
import time
def print_message():
print("这是一个定时任务")
print("等待3秒...")
time.sleep(3)
print_message()
执行结果:
等待3秒...
这是一个定时任务
在这个例子中,time.sleep(3)
让程序暂停执行3秒,然后执行 print_message
函数。
使用sched模块实现定时任务
我们还可以使用sched模块来实现更复杂的定时任务。
import sched
import time
scheduler = sched.scheduler(time.time, time.sleep)
def print_message(name):
print(f"这是{name}的定时任务")
print("等待3秒...")
scheduler.enter(3, 1, print_message, ("Task1",))
scheduler.run()
执行结果:
等待3秒...
这是Task1的定时任务
在这个例子中,我们使用sched模块创建一个调度器,并安排一个3秒后执行的任务。
重复执行定时任务
我们可以通过递归调用函数来实现重复执行的定时任务。
import threading
def print_message():
print("这是一个每2秒执行一次的任务")
threading.Timer(2, print_message).start()
print_message()
执行结果:
这是一个每2秒执行一次的任务
(每2秒重复输出)
在这个例子中,使用 threading.Timer
创建一个2秒后执行 print_message
函数的定时器,并在函数内部再次调用自己实现重复执行。
使用APScheduler实现高级定时任务
APScheduler是一个强大的定时任务调度库,支持更多高级功能。
from apscheduler.schedulers.background import BackgroundScheduler
import time
def print_message():
print("这是一个每秒执行一次的任务")
scheduler = BackgroundScheduler()
scheduler.add_job(print_message, 'interval', seconds=1)
scheduler.start()
try:
while True:
time.sleep(2)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()
执行结果:
这是一个每秒执行一次的任务
(每秒重复输出)
在这个例子中,我们使用APScheduler创建一个后台调度器,安排每秒执行一次 print_message
函数,并在主线程中保持调度器运行。
总结
总结一下,Python中可以通过多种方式实现定时任务,包括使用 time.sleep
、sched
模块、threading.Timer
和 APScheduler。根据具体需求选择合适的方式,可以让我们的定时任务更加灵活和强大。
License:
CC BY 4.0