python schedule 安装和使用
使用pip安装
pip install schedule
使用
import schedule
import time
import datetime
def job():
now_time = datetime.datetime.now()
print("begin work...", now_time)
time.sleep(2)
schedule.every(10).seconds.do(job) #每10秒钟执行
schedule.every(10).minutes.do(job) #每10分钟执行
schedule.every().hour.do(job) #每小时执行
schedule.every().day.at("10:30").do(job) #每天的10:30执行
schedule.every(2).to(10).seconds.do(job) #每2-10秒随机间隔执行
schedule.every().monday.do(job) #每周一的当前时间点执行
schedule.every().wednesday.at("13:15").do(job) #每周三的13:15执行
while True:
schedule.run_pending()
time.sleep(1)
如果需要传参
schedule.every(10).seconds.do(job, "参数")
注:schedule 定时执行时间会在原方法结束后才开始新一轮的及时,也就是说如果方法体执行需要2秒,定时每10秒执行一次,实际的会是每12秒执行一次。解决方法可以使用多线程。
使用多线程
import time
import datetime
import schedule
import threading
def job_start():
print(time.time())
time.sleep(2)
return True
def job_task():
threading.Thread(target=job_start).start()
return True
schedule.every(10).seconds.do(job_task)
while True:
schedule.run_pending()
time.sleep(1)
注:使用多线程执行定时任务每执行一次就会增加一个线程,长期执行可能会有很大的弊端。如果定时时间小于程序体执行时间更可能会出现问题。