python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)
本文介紹了python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn),具體如下:
#BlockingScheduler定時(shí)任務(wù) from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime 首先看看周一到周五定時(shí)執(zhí)行任務(wù) # 輸出時(shí)間 def job(): print(datetime.now().strtime("%Y-%m-%d %H:%M:%S")) # BlockingScheduler scheduler = BlockingScheduler() scheduler.add_job(job, "cron", day_of_week="1-5", hour=6, minute=30) schduler.start() scheduler.add_job(job, 'cron', hour=1, minute=5) hour =19 , minute =23 這里表示每天的19:23 分執(zhí)行任務(wù) hour ='19', minute ='23' 這里可以填寫數(shù)字,也可以填寫字符串 hour ='19-21', minute= '23' 表示 19:23、 20:23、 21:23 各執(zhí)行一次任務(wù) #每300秒執(zhí)行一次 scheduler .add_job(job, 'interval', seconds=300) #在1月,3月,5月,7-9月,每天的下午2點(diǎn),每一分鐘執(zhí)行一次任務(wù) scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*') # 當(dāng)前任務(wù)會(huì)在 6、7、8、11、12 月的第三個(gè)周五的 0、1、2、3 點(diǎn)執(zhí)行 scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3') #從開始時(shí)間到結(jié)束時(shí)間,每隔倆小時(shí)運(yùn)行一次 scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00') #自制定時(shí)器 from datetime import datetime import time # 每n秒執(zhí)行一次 def timer(n): while True: print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) time.sleep(n) timer(5)
Python下實(shí)現(xiàn)定時(shí)任務(wù)的方式有很多種方式。
循環(huán)sleep:
這是一種最簡單的方式,在循環(huán)里放入要執(zhí)行的任務(wù),然后sleep一段時(shí)間再執(zhí)行。缺點(diǎn)是,不容易控制,而且sleep是個(gè)阻塞函數(shù)。
def timer(n): ''' 每n秒執(zhí)行一次 ''' while True: print time.strftime('%Y-%m-%d %X',time.localtime()) yourTask() # 此處為要執(zhí)行的任務(wù) time.sleep(n)
threading的Timer:
threading模塊中的Timer能夠幫助實(shí)現(xiàn)定時(shí)任務(wù),而且是非阻塞的。
比如3秒后打印helloworld:
def printHello(): print "hello world" Timer(3, printHello).start()
比如每3秒打印一次helloworld:
def printHello(): print "Hello World" t = Timer(2, printHello) t.start() if __name__ == "__main__": printHello()
使用sched模塊:
sched是一種調(diào)度(延時(shí)處理機(jī)制)。
# -*- coding:utf-8 -*- # use sched to timing import time import os import sched # 初始化sched模塊的scheduler類 # 第一個(gè)參數(shù)是一個(gè)可以返回時(shí)間戳的函數(shù),第二個(gè)參數(shù)可以在定時(shí)未到達(dá)之前阻塞。 schedule = sched.scheduler(time.time, time.sleep) # 被周期性調(diào)度觸發(fā)的函數(shù) def execute_command(cmd, inc): ''' 終端上顯示當(dāng)前計(jì)算機(jī)的連接情況 ''' os.system(cmd) schedule.enter(inc, 0, execute_command, (cmd, inc)) def main(cmd, inc=60): # enter四個(gè)參數(shù)分別為:間隔事件、優(yōu)先級(jí)(用于同時(shí)間到達(dá)的兩個(gè)事件同時(shí)執(zhí)行時(shí)定序)、被調(diào)用觸發(fā)的函數(shù), # 給該觸發(fā)函數(shù)的參數(shù)(tuple形式) schedule.enter(0, 0, execute_command, (cmd, inc)) schedule.run() # 每60秒查看下網(wǎng)絡(luò)連接情況 if __name__ == '__main__': main("netstat -an", 60)
使用定時(shí)框架APScheduler:
APScheduler是基于Quartz的一個(gè)Python定時(shí)任務(wù)框架。提供了基于日期、固定時(shí)間間隔以及crontab類型的任務(wù),并且可以持久化任務(wù)。
這個(gè)現(xiàn)在還沒自己嘗試過,等過段時(shí)間用了再來補(bǔ)充。
使用windows的定時(shí)任務(wù):
這里可以將所需要的Python程序打包成exe文件,然后在windows下設(shè)置定時(shí)執(zhí)行。
使用Linux的定時(shí)任務(wù)(Crontab):
在Linux下可以很方便的借助Crontab來設(shè)置和運(yùn)行定時(shí)任務(wù)。進(jìn)入Crontab文件編輯頁面,設(shè)置時(shí)間間隔,使用一些shell命令來運(yùn)行bash腳本或者是Python腳本,保存后Linux會(huì)自動(dòng)按照設(shè)定的時(shí)間來定時(shí)運(yùn)行程序。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python實(shí)現(xiàn)定時(shí)任務(wù)
- Python3實(shí)現(xiàn)定時(shí)任務(wù)的四種方式
- python 實(shí)現(xiàn)定時(shí)任務(wù)的四種方式
- Linux下Python腳本自啟動(dòng)與定時(shí)任務(wù)詳解
- Python3.6 Schedule模塊定時(shí)任務(wù)(實(shí)例講解)
- 對(duì)Python定時(shí)任務(wù)的啟動(dòng)和停止方法詳解
- Python中定時(shí)任務(wù)框架APScheduler的快速入門指南
- 詳解使用python crontab設(shè)置linux定時(shí)任務(wù)
- python Celery定時(shí)任務(wù)的示例
- Python中實(shí)現(xiàn)定時(shí)任務(wù)詳解
相關(guān)文章
Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解
這篇文章主要介紹了Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架內(nèi)置方法實(shí)現(xiàn)登錄功能的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-06-06PyCharm License Activation激活碼失效問題的解決方法(圖文詳解)
這篇文章主要介紹了PyCharm License Activation激活碼失效問題的解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03PyQt5 實(shí)現(xiàn)狀態(tài)欄永久顯示消息
這篇文章主要介紹了PyQt5 實(shí)現(xiàn)狀態(tài)欄永久顯示消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03python實(shí)現(xiàn)在內(nèi)存中讀寫str和二進(jìn)制數(shù)據(jù)代碼
這篇文章主要介紹了python實(shí)現(xiàn)在內(nèi)存中讀寫str和二進(jìn)制數(shù)據(jù)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python爬蟲URL重試機(jī)制的實(shí)現(xiàn)方法(python2.7以及python3.5)
今天小編就為大家分享一篇python爬蟲URL重試機(jī)制的實(shí)現(xiàn)方法(python2.7以及python3.5),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12python通過yield實(shí)現(xiàn)數(shù)組全排列的方法
這篇文章主要介紹了python通過yield實(shí)現(xiàn)數(shù)組全排列的方法,實(shí)例分析了全排列的概念及yield實(shí)現(xiàn)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03