原文首發於個人站點:隱舍
微信公衆號:DreamHub
schedule是一個第三方輕量級的任務調度模塊,可以按照秒,分,小時,日期
或者自定義事件執行時間
,便於執行輕量級任務。
安裝
pip install schedule
模塊使用
import time
import schedule
import datetime
def job():
print(datetime.datetime.now(),'I am working...')
schedule.every(10).seconds.do(job) #每10秒執行一次,如果要加參數,只需在job後面加上參數
schedule.every(10).minutes.do(job) # 每10分鐘執行一次
schedule.every().hour.do(job) # 每小時執行一次
schedule.every().day.at("10:30").do(job) # 每天十點半執行
schedule.every(5).to(10).minutes.do(job) # 5-10分鐘隨機執行一次
schedule.every().monday.do(job) # 每週一執行
schedule.every().wednesday.at("13:15").do(job) # 每週三13點15執行
schedule.every().minute.at(":17").do(job) # 每分鐘17秒時執行
while True:
schedule.run_pending()
time.sleep(1)
PS: 函數帶有參數時在schedule
模塊添加:
import schedule
import time
def job(name):
print("her name is : ", name)
name = xiaona
schedule.every(10).minutes.do(job, name)
schedule.every().hour.do(job, name)
schedule.every().day.at("10:30").do(job, name)
schedule.every(5).to(10).days.do(job, name)
schedule.every().monday.do(job, name)
schedule.every().wednesday.at("13:15").do(job, name)
while True:
schedule.run_pending()
time.sleep(1)
侷限性
1.需要定時運行的函數job不應當是死循環類型的,也就是說,這個線程應該有一個執行完畢的出口。一是因爲線程萬一僵死,會是非常棘手的問題;二是下一次定時任務還會開啓一個新的線程,執行次數多了就會演變成災難。
2.如果schedule的時間間隔設置得比job執行的時間短,一樣會線程堆積形成災難,也就是說,我job的執行時間是1個小時,但是我定時任務設置的是5分鐘一次,那就會一直堆積線程。