python3.X 使用schedule實(shí)現(xiàn)定時(shí)任務(wù)

1.安裝schedule,安裝命令如下:

pip install schedule

2.以下為普通簡(jiǎn)單的例子:
import schedule
import time
 
def job():
    print("I'm working...")
 
# 每隔5分鐘執(zhí)行一次任務(wù)
schedule.every(5).minutes.do(job)
# 每隔一小時(shí)執(zhí)行一次任務(wù)
schedule.every().hour.do(job)
# 每天的10:30執(zhí)行一次任務(wù)
schedule.every().day.at("10:30").do(job)
# 每5-10分鐘執(zhí)行一次任務(wù)
schedule.every(5).to(10).minutes.do(job)
# 每周一的這個(gè)時(shí)候執(zhí)行一次任務(wù)
schedule.every().monday.do(job)
# 每周三的13:30執(zhí)行一次任務(wù)
schedule.every().wednesday.at("13:30").do(job)
# 每分鐘的這個(gè)時(shí)刻執(zhí)行一次任務(wù)
schedule.every().minute.at(":17").do(job)
# 如果job函數(shù)有有參數(shù)時(shí),這么寫(xiě)
schedule.every(10).seconds.do(job,"參數(shù)") 

while True:
    # 啟動(dòng)服務(wù)
    run_pending() 
   #運(yùn)行所有可以運(yùn)行的任務(wù)
    schedule.run_pending()
    time.sleep(1)

3.schedule是串行執(zhí)行,如果時(shí)間重疊就會(huì)有重疊現(xiàn)象,但可以用多線程實(shí)現(xiàn)
import schedule
import time
import threading

def job():
    print("I'm working... in job1  start")
    time.sleep(15)
    print("I'm working... in job1  end")

def job2():
    print("I'm working... in job2")

def run_threaded(job_func):
     job_thread = threading.Thread(target=job_func)
     job_thread.start()
       #threading.Thread(target=loop,args=(i,loops[i]))

 schedule.every(10).seconds.do(run_threaded,job)
 schedule.every(10).seconds.do(run_threaded,job2)


while True:
    schedule.run_pending()
    time.sleep(1)
4.如果想要對(duì)線程的數(shù)量有所控制,則可以采用如下方法:
import Queue
import time
import threading
import schedule


def job():
    print("I'm working")


def worker_main():
    while 1:
        job_func = jobqueue.get()
        job_func()

jobqueue = Queue.Queue()

schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)

worker_thread = threading.Thread(target=worker_main)
worker_thread.start()

while 1:
    schedule.run_pending()
    time.sleep(1)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Memcached 教程 Memcached是一個(gè)自由開(kāi)源的,高性能,分布式內(nèi)存對(duì)象緩存系統(tǒng)。 Memcached...
    大熊_7d48閱讀 2,722評(píng)論 0 0
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,345評(píng)論 0 5
  • Python有兩個(gè)著名的包管理工具easy_install.py和pip。在Python2.7的安裝包中,easy...
    呆呆滴木木菇?jīng)?/span>閱讀 15,402評(píng)論 0 5
  • 蘿卜鎮(zhèn)的秋天比其他任何地方都要漂亮。白蘿卜谷中盛開(kāi)著艷麗的梔子蘭,沒(méi)有名字的小河旁一人高的青草郁綠郁綠。白小易一個(gè)...
    暮雨歸閱讀 798評(píng)論 0 0
  • 2012年開(kāi)始,歷經(jīng)三十余年高速發(fā)展的中國(guó)經(jīng)濟(jì)正式開(kāi)啟了二次創(chuàng)業(yè)模式,“大眾創(chuàng)業(yè),萬(wàn)眾創(chuàng)新”成為了新一波的時(shí)代大潮...
    靜888閱讀 570評(píng)論 0 2

友情鏈接更多精彩內(nèi)容