關於我
一個有思想的程序猿,終身學習實踐者,目前在一個創業團隊任team lead,技術棧涉及Android、Python、Java和Go,這個也是咱們團隊的主要技術棧。
Github:https://github.com/hylinux1024
微信公衆號:終身開發者(angrycode)python
最近在作項目的時候常常會用到定時任務,因爲個人項目是使用Java
來開發,用的是SpringBoot
框架,所以要實現這個定時任務其實並不難。linux
後來我在想若是我要在Python
中實現,我要怎麼作呢?
一開始我首先想到的是Timer
git
這個是一個擴展自threading
模塊來實現的定時任務。它實際上是一個線程。github
# 首先定義一個須要定時執行的方法 >>> def hello(): print("hello!") # 導入threading,並建立Timer,設置1秒後執行hello方法 >>> import threading >>> timer = threading.Timer(1,hello) >>> timer.start() # 1秒後打印 >>> hello!
這個內置的工具使用起來也簡單,對於熟悉Java
的同窗來講也是很是容易的。然而我一直可否有一個更加Pythonic
的工具或者類庫呢?微信
這時我看到一篇文章介紹Scheduler
類庫的使用,忽然以爲這就是我想要的框架
要使用這個庫先使用如下命令進行安裝工具
pip install schedule
schedule
模塊中的方法可讀性很是好,並且支持鏈式調用學習
import schedule # 定義須要執行的方法 def job(): print("a simple scheduler in python.") # 設置調度的參數,這裏是每2秒執行一次 schedule.every(2).seconds.do(job) if __name__ == '__main__': while True: schedule.run_pending() # 執行結果 a simple scheduler in python. a simple scheduler in python. a simple scheduler in python. ...
其它設置調度參數的方法線程
# 每小時執行 schedule.every().hour.do(job) # 天天12:25執行 schedule.every().day.at("12:25").do(job) # 每2到5分鐘時執行 schedule.every(5).to(10).minutes.do(job) # 每星期4的19:15執行 schedule.every().thursday.at("19:15").do(job) # 每第17分鐘時就執行 schedule.every().minute.at(":17").do(job)
若是要執行的方法須要參數呢?code
# 須要執行的方法須要傳參 def job(val): print(f'hello {val}') # schedule.every(2).seconds.do(job) # 使用帶參數的do方法 schedule.every(2).seconds.do(job, "hylinux") # 執行結果 hello hylinux hello hylinux hello hylinux hello hylinux hello hylinux hello hylinux ...
是否是很簡單?