下面是关于“Python定时任务 sched模块用法实例”的完整攻略。
示例说明
在介绍 sched模块用法实例前,我们先来看两个示例说明,以加深对 sched模块的理解。
示例一:每 10 秒后输出一句话
import sched
import time
s = sched.scheduler(time.time, time.sleep)
def print_sentence():
print("Hello, World!")
s.enter(10, 1, print_sentence, ())
s.enter(10, 1, print_sentence, ())
s.run()
在这个示例中,我们使用了 sched.scheduler() 方法创建了一个调度器实例 s。接下来定义了一个 print_sentence() 方法,用于打印一句话,之后调用了 sched.scheduler.enter() 方法来设定任务定时时间为 10 秒,任务优先级为 1,任务体为 print_sentence() 方法,任务参数为空。
最后调用了 sched.scheduler.run() 方法来启动定时任务,这样就可以每隔 10 秒打印一句话。
示例二:设定多个定时任务,有任务相近的情况下实现精确任务执行
import sched
import time
s = sched.scheduler(time.time, time.sleep)
def task_one():
print("This is task one.")
s.enter(1, 2, task_one, ())
def task_two():
print("This is task two.")
s.enter(5, 1, task_two, ())
s.enter(1, 2, task_one, ())
s.enter(5, 1, task_two, ())
s.run()
在这个示例中,我们也是先创建了一个 sched.scheduler 实例 s。接下来定义了 task_one() 和 task_two() 两个方法,并在其中设定了不同的定时任务。其中 task_one() 方法设定了每 1 秒执行一次的任务,优先级为 2;task_two() 方法设定了每 5 秒执行一次的任务,优先级为 1。
最后通过调用 sched.scheduler().enter() 方法来将两个定时任务添加到任务队列中,再调用 sched.scheduler().run() 方法来启动定时任务,这样在任务相近的情况下也可以实现精确任务执行。
完整攻略
在了解了上面两个示例之后,我们就可以开始介绍完整的 sched模块用法实例了。
步骤一:导入模块
首先要做的就是导入 scheduled 库:
import sched
import time
步骤二:创建调度器
接下来创建调度器,使用 time.time() 作为第一个参数,time.sleep() 作为第二个参数。
s = sched.scheduler(time.time, time.sleep)
步骤三:编写任务函数
编写任务函数,并在其中调用 sched.scheduler().enter() 方法来将任务添加到任务队列中。它的参数有以下四个:
- 定时任务执行的时间戳
- 任务优先级,数字越小表示任务越优先
- 任务函数
- 任务参数,为可选参数,默认值为()
下面是一个定时输出一句话的示例:
def print_sentence():
print("Hello, World!")
s.enter(10, 1, print_sentence, ())
下面是一个每分钟在控制台输出当前时间的示例:
import time
def display_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
s.enter(60, 1, display_time, ())
步骤四:添加任务到任务队列
使用 sched.scheduler().enter() 方法将任务添加到任务队列中。
例如:
s.enter(10, 1, print_sentence, ())
s.enter(60, 1, display_time, ())
步骤五:运行调度器
最后调用 sched.scheduler().run() 方法启动调度器,开始定时任务:
s.run()
这样就可以实现定时输出一句话和每分钟在控制台输出当前时间的定时任务了。
总结
sched模块可以很方便的实现定时任务,只需要按照以上步骤进行即可。同时,在定义任务时一定要注意优先级,数字越小表示任务越优先。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python定时任务 sched模块用法实例 - Python技术站