Python3.x下實現定時任務的方式有不少種方式。shell
最簡單的方式,在循環裏放入要執行的任務,而後sleep一段時間再執行。缺點是,不容易控制,並且sleep是個阻塞函數windows
def timer(n): ''''' 每n秒執行一次 ''' while True: print(time.strftime('%Y-%m-%d %X',time.localtime())) yourTask() # 此處爲要執行的任務 time.sleep(n)
例如:5秒後執行bash
def printHello(): print("start" ) Timer(5, printHello).start()
例如:間隔5秒執行一次網絡
def printHello(): print("start" ) timer = threading.Timer(5,printHello) timer.start() if __name__ == "__main__": printHello()
例如:兩種方式組合用,5秒鐘後執行,而且以後間隔5秒執行一次框架
def printHello(): print("start") timer = threading.Timer(5,printHello) timer.start() if __name__ == "__main__": timer = threading.Timer(5,printHello) timer.start()
sched是一種調度(延時處理機制)。分佈式
import time import os import sched # 初始化sched模塊的scheduler類 # 第一個參數是一個能夠返回時間戳的函數,第二個參數能夠在定時未到達以前阻塞。 schedule = sched.scheduler(time.time, time.sleep) # 被週期性調度觸發的函數 def execute_command(cmd, inc): print('執行主程序') ''''' 終端上顯示當前計算機的鏈接狀況 ''' os.system(cmd) schedule.enter(inc, 0, execute_command, (cmd, inc)) def main(cmd, inc=60): # enter四個參數分別爲:間隔事件、優先級(用於同時間到達的兩個事件同時執行時定序)、被調用觸發的函數, # 給該觸發函數的參數(tuple形式) schedule.enter(0, 0, execute_command, (cmd, inc)) schedule.run() # 每60秒查看下網絡鏈接狀況 if __name__ == '__main__': main("netstat -an", 60)
APScheduler是基於Quartz的一個Python定時任務框架。提供了基於日期、固定時間間隔以及crontab類型的任務,而且能夠持久化任務。函數
須要先安裝apscheduler庫,cmd窗口命令:pip install apscheduler工具
簡單的間隔時間調度代碼:spa
from datetime import datetime import time import os from apscheduler.schedulers.background import BackgroundScheduler def tick(): print('Tick! The time is: %s' % datetime.now()) if __name__ == '__main__': scheduler = BackgroundScheduler() # 間隔3秒鐘執行一次 scheduler.add_job(tick, 'interval', seconds=3) # 這裏的調度任務是獨立的一個線程 scheduler.start() print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C')) try: # 其餘任務是獨立的線程執行 while True: time.sleep(2) print('sleep!') except (KeyboardInterrupt, SystemExit): scheduler.shutdown() print('Exit The Job!')
很是強大的分佈式任務調度框架;
須要先安裝Celery庫,cmd窗口命令: pip install Celery線程
基於Redis的做業隊列工具,優先選擇APScheduler定時框架;
能夠將所須要的Python程序打包成exe文件,而後在windows下設置定時執行。
在Linux下能夠很方便的藉助Crontab來設置和運行定時任務。進入Crontab文件編輯頁面,設置時間間隔,使用一些shell命令來運行bash腳本或者是Python腳本,保存後Linux會自動按照設定的時間來定時運行程序。