一、安装
pip install schedule
二、schedule模块的用法
1 设置每x周/天/小时/分钟/秒执行一次
如下分别列举了每两秒、每两分钟、每两小时、每两天、每两周执行一次的代码
import schedule
import time
def do_func():
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
def main():
# 每两秒执行一次
schedule.every(2).seconds.do(do_func)
# 每两分钟执行一次
schedule.every(2).minutes.do(do_func)
# 每两小时执行一次
schedule.every(2).hours.do(do_func)
# 每两天执行一次
schedule.every(2).days.do(do_func)
# 每两周执行一次
schedule.every(2).weeks.do(do_func)
while True:
schedule.run_pending()
if __name__=="__main__":
main()
上述代码时间间隔较长,无法执行演示,下面只执行每2秒执行一次的代码如下:
import schedule
import time
def do_func():
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
def main():
schedule.every(2).seconds.do(do_func)
while True:
schedule.run_pending()
if __name__=="__main__":
main()
执行结果如下:
2022-05-24 23:15:01 in do func ...
2022-05-24 23:15:03 in do func ...
2022-05-24 23:15:05 in do func ...
2022-05-24 23:15:07 in do func ...
2022-05-24 23:15:09 in do func ...
2022-05-24 23:15:11 in do func ...
2022-05-24 23:15:13 in do func ...
2 设置定时执行
设置在每分钟的多少秒时,每小时多少分的时刻,每天几点等等指定时间点执行的设置方法如下所示
import schedule
import time
def do_func():
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
def main():
# 每分钟的30秒时执行
schedule.every().minute.at(":30").do(do_func)
# 每小时10分时执行
schedule.every().hour.at(":10").do(do_func)
# 每小时10分30秒时执行
schedule.every().hour.at("10:30").do(do_func)
# 每间隔5个小时的10分30秒时执行,比如当前时间7:00,则下一次执行时间为 12:10:30
schedule.every(5).hour.at("10:30").do(do_func)
# 每天10点30分执行
schedule.every().days.at("10:30").do(do_func)
# 每天10点30分30秒执行
schedule.every().days.at("10:30:30").do(do_func)
# 每两天10点30分30秒执行,比如现在执行,明天不执行,后天10:30:30时再次执行
schedule.every(2).days.at("10:30:30").do(do_func)
# 每周周一执行
schedule.every().monday.do(do_func)
# 每周周三早上8:30执行
schedule.every().wednesday.at("08:30").do(do_func)
# 每周周日凌晨 00:00:01 时执行
schedule.every().sunday.at("00:00:01").do(do_func)
while True:
schedule.run_pending()
if __name__=="__main__":
main()
上述代码时间跨度比较长如法代码演示,下面只演示每分钟30处执行的场景,代码如下:
import schedule
import time
def do_func():
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
def main():
# 每分钟的30秒时执行
schedule.every().minute.at(":30").do(do_func)
while True:
schedule.run_pending()
if __name__=="__main__":
main()
执行结果如下:
2022-05-24 23:36:30 in do func ...
2022-05-24 23:37:30 in do func ...
2022-05-24 23:38:30 in do func ...
2022-05-24 23:39:30 in do func ...
2022-05-24 23:40:30 in do func ...
2022-05-24 23:41:30 in do func ...
2022-05-24 23:42:30 in do func ...
3 可以通过装饰器设置定时任务
如下,同样是每两秒执行一次的定时任务,其他定时任务格式类似
import schedule
import time
@schedule.repeat(schedule.every(2).seconds)
def do_func():
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
def main():
while True:
schedule.run_pending()
if __name__=="__main__":
main()
执行结果如下
2022-05-24 23:45:40 in do func ...
2022-05-24 23:45:42 in do func ...
2022-05-24 23:45:44 in do func ...
2022-05-24 23:45:46 in do func ...
2022-05-24 23:45:48 in do func ...
2022-05-24 23:45:50 in do func ...
2022-05-24 23:45:52 in do func ...
4 执行任务的函数可以传参数
(1)不使用装饰器的场景
代码如下,传入两个参数
import schedule
import time
def do_func(name,age):
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年龄:"+str(age))
def main():
# 每分钟的30秒时执行
schedule.every(2).seconds.do(do_func,"张三丰",100)
while True:
schedule.run_pending()
if __name__=="__main__":
main()
执行结果如下:
2022-05-24 23:56:41 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:43 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:45 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:47 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:49 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:51 in do func : 姓名:张三丰 年龄:100
(2)使用装饰器的场景
代码如下,传入两个参数
import schedule
import time
@schedule.repeat(schedule.every(2).seconds,"张三丰",100)
def do_func(name,age):
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年龄:"+str(age))
def main():
while True:
schedule.run_pending()
if __name__=="__main__":
main()
执行结果如下:
2022-05-24 23:53:30 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:32 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:34 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:36 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:38 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:40 in do func : 姓名:张三丰 年龄:100