一個簡單的Python調度器

關於我
編程界的一名小小程序猿,目前在一個創業團隊任team lead,技術棧涉及Android、Python、Java和Go,這個也是咱們團隊的主要技術棧。 聯繫:hylinux1024@gmail.compython

最近在作項目的時候常常會用到定時任務,因爲個人項目是使用Java來開發,用的是SpringBoot框架,所以要實現這個定時任務其實並不難。linux

後來我在想若是我要在Python中實現,我要怎麼作呢? 一開始我首先想到的是Timer編程

0x00 Timer

這個是一個擴展自threading模塊來實現的定時任務。它實際上是一個線程。小程序

# 首先定義一個須要定時執行的方法
>>> def hello():
	print("hello!")

# 導入threading,並建立Timer,設置1秒後執行hello方法
>>> import threading
>>> timer = threading.Timer(1,hello)
>>> timer.start()
# 1秒後打印
>>> hello!
複製代碼

這個內置的工具使用起來也簡單,對於熟悉Java的同窗來講也是很是容易的。然而我一直可否有一個更加Pythonic的工具或者類庫呢?框架

這時我看到一篇文章介紹Scheduler類庫的使用,忽然以爲這就是我想要的工具

0x01 Scheduler

要使用這個庫先使用如下命令進行安裝學習

pip install schedule
複製代碼

schedule模塊中的方法可讀性很是好,並且支持鏈式調用spa

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
...
複製代碼

是否是很簡單?

0x02 學習資料

  1. bhupeshv.me/A-Simple-Sc…
相關文章
相關標籤/搜索