Python 提供有一個強大的、可用來定義執行任務調度的 sched 模塊,該模塊中含有一個 scheduler 類,可用來執行更復雜的任務調度。
這種定時調度任務的實現還是比較簡單的,總體來說只需要編寫好定時任務最好使用標准范式來使得任務運行起來。
首先,需要導入三個模塊的擴展庫。主要是為了兩個方面,一個是為了記錄時間或者日期准備的,另一個則是為了執行編寫好的任務。
import sched # 定時任務模塊
import time # 時間模塊
from datetime import datetime # 日期時間模塊
接下來主要看一下執行定時任務的函數,就是通過這個函數最后將定時任務可以調度起來執行的,看一下這個調度函數的組成部分。
'''
初始化scheduler類對象
time.time 可以返回時間戳的函數
time.sleep 實現運行阻塞等待
用time模塊的這兩個函數來實例化scheduler對象
'''
schedule = sched.scheduler(time.time, time.sleep)
第一個參數是一個可以返回時間戳的函數,第二個參數可以在定時未到達之前阻塞。
編寫一個任務用於執行。
def work(cycle):
'''
定義需要執行的工作任務
:param cycle: 時間周期,單位:秒
:return:
'''
print('當前執行時間:',datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 將任務函數加到定時任務中
schedule.enter(cycle, 0, work, (cycle,))
print('任務執行狀態:', 'success')
函數介紹:enter四個參數分別為:間隔事件、優先級(用於同時間到達的兩個事件同時執行時定序)、被調用觸發的函數。
最后,編寫調起上述任務的觸發函數,通過觸發上面已經寫好的定時任務來完成定時任務的執行。
def exec_work(cycle=10):
# 添加觸發函數
schedule.enter(0, 0, work, (cycle,))
# 啟動任務
schedule.run()
再通過main的函數入口執行exec_work函數,這樣一個定時任務的調度就算完成了。
if __name__ == '__main__':
exec_work(1)
【往期精彩】
● 不用再使用命令行打包成exe,有人寫出了UI應用,可視化UI界面對python程序進行打包的方法!
● 發現一個秘密:既python3.6之后字典竟然變成了有序集合,我再次驗證了一下!
● 大廠校招白菜打包價40W+,可高興壞了房東大媽...
● 這么多的內置函數能記住嗎?對python的68個內置函數分類總結!
● 必須要會的文件操作對象File,python文件讀寫操作利器!
● 你不知道的CS模式的進程管理工具,狀態監測、項目啟停一目了然!
● 如何將一個python應用以docker鏡像的方式來運行?
● python-celery專注於實現分布式異步任務處理、任務調度的插件!
● python遠程服務操作工具:fabric,遠程命令、本地命令、服務器操作利器!
● python超贊插件you-get,執行一行命令即可下載、命令行下載工具推薦!
● 辦公自動化:Python-win32com自動將word文檔轉換成pdf格式!
● Git LFS 3.0.0 發布,對大文件進行版本控制的 Git 擴展