schedule 是 Python 中非常容易使用的排程套件,目標功能很單純,就是實現定時排程,但是缺少了比較「進階」的用途,例如紀錄排程(每次啟動程式都需要重新設定)、併發執行等,不過已經非常足夠使用。
every 後面可以使用的參數:
註: 單位除了星期幾(星期一到星期天)以外都可以使用單數或是複數,例如 second 和 seconds,不過單數的話前面的 every 必須要不帶參數或是參數為 1 ,不然會拋出錯誤,所以筆者習慣直接使用複數的單位
常見範例:
參考資料:
schedule
GitHub - dbader/schedule
安裝套件
pip install schedule
動態執行
每五秒執行:
import schedule
def job():
print("工作中")
if __name__ == '__main__':
schedule.every(5).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
every 後面可以使用的參數:
- seconds: 秒
- minutes: 分鐘
- hours: 小時
- days: 天
- weeks: 每周
- monday: 星期一
- tuesday: 星期二
- wednesday: 星期三
- thursday: 星期四
- friday: 星期五
- saturday: 星期六
- sunday: 星期日
註: 單位除了星期幾(星期一到星期天)以外都可以使用單數或是複數,例如 second 和 seconds,不過單數的話前面的 every 必須要不帶參數或是參數為 1 ,不然會拋出錯誤,所以筆者習慣直接使用複數的單位
常見範例:
# 每分鐘的 31 秒執行
schedule.every().minute.at(":31").do(job)
# 每小時的 49 分 59 秒執行
schedule.every().hours.at("49:59").do(job2)
# 每天的 23 點 49 分 59 秒執行
schedule.every().days.at("23:49:59").do(job3)
使用裝飾器執行
假設有固定的排程,可以使用裝飾器定義執行週期,然後在程式啟動時執行 run_pending 即可:
import schedule
from schedule import every, repeat
@repeat(every(1).seconds)
def job():
print("工作中")
if __name__ == '__main__':
while True:
schedule.run_pending()
time.sleep(1)
參考資料:
schedule
GitHub - dbader/schedule
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com