欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python定時任務APScheduler原理及實例解析

 更新時間:2020年05月30日 09:21:58   作者:BSSZDS930  
這篇文章主要介紹了Python定時任務APScheduler原理及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

定時任務:

1、 線程睡眠函數 sleep() ——粗暴!一直占有 CPU 資源,導致后續(xù)操作無法執(zhí)行

2、 threading.Timer(10, task, ()).start() # (間隔s,任務task, 函參)

3、 import sched

# 初始化 sched 模塊的 scheduler 類
scheduler = sched.scheduler(time.time, time.sleep)
# 增加調度任務 enter(delay, priority, action, argument=(), kwargs={})
scheduler.enter(10, 1, task) 
# 運行任務
scheduler.run()

scheduler 中的每個調度任務只會工作一次,不會無限循環(huán)被調用。如果想重復執(zhí)行同一任務, 需要重復添加調度任務即可。

  • enter(delay, priority, action, argument=(), kwargs={}) 間隔執(zhí)行任務。delay單位是秒。priority越小優(yōu)先級越大。兩個任務指定相同的延遲時間,優(yōu)先級大的任務會向被執(zhí)行。action 即需要執(zhí)行的函數,argument 和 kwargs 分別是函數的位置和關鍵字參數。
  • scheduler.enterabs(time, priority, action, argument=(), kwargs={}) 時間點執(zhí)行任務。因此,time是絕對時間.其他參數用法與 enter() 中的參數用法是一致。

APScheduler——Advanced Python Scheduler。

一個輕量級的 Python 定時任務調度框架。APScheduler 支持三種調度任務:固定時間間隔,固定時間點(日期),Linux下Crontab 命令。同時,它還支持異步執(zhí)行、后臺執(zhí)行調度任務。

import datetime
import time
from apscheduler.schedulers.background import BackgroundScheduler

def timedTask():
  print(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])

if __name__ == '__main__':
  # 1.創(chuàng)建后臺執(zhí)行的 schedulers
  scheduler = BackgroundScheduler() 
  # 2.添加調度任務,調度方法為 timedTask,觸發(fā)器選擇 interval(間隔性),間隔時長為 2 秒
  job = scheduler.add_job(timedTask, 'interval', seconds=2)
  # 3.啟動調度任務
  scheduler.start()
  
  while True:
    print(time.time())
    time.sleep(5)

基礎組件

  • schedulers(調度器)它是任務調度器,屬于控制器角色。它配置作業(yè)存儲器和執(zhí)行器可以在調度器中完成,例如添加、修改和移除作業(yè)。
    • BlockingScheduler : 調度器在當前進程的主線程中運行,也就是會阻塞當前線程。
    • BackgroundScheduler : 調度器在后臺線程中運行,不會阻塞當前線程。
    • AsyncIOScheduler : 結合 asyncio 模塊(一個異步框架)一起使用。
    • GeventScheduler : 程序中使用 gevent(高性能的Python并發(fā)框架)作為IO模型,和 GeventExecutor 配合使用。
    • TornadoScheduler : 程序中使用 Tornado(一個web框架)的IO模型,用 ioloop.add_timeout 完成定時喚醒。
    • TwistedScheduler : 配合 TwistedExecutor,用 reactor.callLater 完成定時喚醒。
    • QtScheduler : 你的應用是一個 Qt 應用,需使用QTimer完成定時喚醒。
  • triggers(觸發(fā)器)描述調度任務被觸發(fā)的條件。不過觸發(fā)器完全是無狀態(tài)的。
    • date 時間點觸發(fā): scheduler .add_job(job_func, 'date', run_date=datetime(2017, 12, 13, 14, 0, 0), args=['text'])
    • interval 固定時間間隔觸發(fā): scheduler .add_job(job_func, 'interval', minutes=2, start_date='2017-12-13 14:00:01' , end_date='2017-12-13 14:00:10')
    • cron 特定時間周期性地觸發(fā): scheduler .add_job(job_func, 'cron', month='1-3,7-9',day='0, tue', hour='0-3')
  • job stores(作業(yè)存儲器)任務持久化倉庫,默認保存任務在內存中,也可將任務保存都各種數據庫中,任務中的數據序列化后保存到持久化數據庫,從數據庫加載后又反序列化。
    • 有兩種添加方法,一是 add_job(), 二是scheduled_job()修飾器來修飾函數。區(qū)別是:第一種方法返回一個 apscheduler.job.Job 的實例,可用來改變或移除 job。第二種方法只適用于應用運行期間不會改變的 job。
    • 移除 job 也有兩種方法:remove_job() 和 job.remove()。
    • remove_job() 是根據 job 的 id 來移除,所以要在 job 創(chuàng)建時指定一個 id。job.remove() 則是對 job 執(zhí)行 remove 方法即可。
    • 獲取 job 列表:通過 scheduler.get_jobs() 方法能夠獲取當前調度器中的所有 job 的列表。
    • 修改job: 用Job.modify() 或 modify_job()方法來修改 job 的屬性。但注意job 的 id 是無法被修改的。
    • 關閉 job:默認情況下調度器會等待所有正在運行的作業(yè)完成后,關閉所有的調度器和作業(yè)存儲。如果你不想等待,可以將 wait 選項設置為 False。
    • 更新任務reschedule_job()
  • executors(執(zhí)行器)負責處理作業(yè)的運行,它們通常通過在作業(yè)中提交指定的可調用對象到一個線程或進城池來進行。當作業(yè)完成時,執(zhí)行器將會通知調度器。最常用的 executor 有兩種:ProcessPoolExecutor 和 ThreadPoolExecutor

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python?pandas?數據排序的幾種常用方法

    python?pandas?數據排序的幾種常用方法

    這篇文章主要介紹了python?pandas數據排序的幾種常用方法,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Sanic框架請求與響應實例分析

    Sanic框架請求與響應實例分析

    這篇文章主要介紹了Sanic框架請求與響應,結合實例形式詳細分析了Sanic框架請求與相應的相關參數、方法及使用技巧,需要的朋友可以參考下
    2018-07-07
  • Python DataFrame實現固定周期內統(tǒng)計每列的非零值

    Python DataFrame實現固定周期內統(tǒng)計每列的非零值

    在數據處理中,使用DataFrame統(tǒng)計固定周期內每列的非零值數量是一種常見需求,通過將數據分組并使用計數函數,可以方便地實現此目標,具體方法包括首先計算每列的0值個數,然后通過總數減去0值個數得到非零值的數量
    2024-09-09
  • Swin?Transformer圖像處理深度學習模型

    Swin?Transformer圖像處理深度學習模型

    這篇文章主要為大家介紹了Swin?Transformer圖像處理深度學習模型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • matplotlib繪制雷達圖的基本配置(萬能模板案例)

    matplotlib繪制雷達圖的基本配置(萬能模板案例)

    本文主要介紹了matplotlib繪制雷達圖的基本配置(萬能模板案例),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • python接口自動化之ConfigParser配置文件的使用詳解

    python接口自動化之ConfigParser配置文件的使用詳解

    這篇文章主要介紹了python接口自動化之ConfigParser配置文件的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Python基礎語法之變量與數據類型詳解

    Python基礎語法之變量與數據類型詳解

    這篇文章主要為大家詳細介紹了Python基礎語法中變量與數據類型的用法,文中的示例代碼講解詳細,對我們學習Python有一定的幫助,感興趣的可以了解一下
    2022-07-07
  • PyQt5實現讓QScrollArea支持鼠標拖動的操作方法

    PyQt5實現讓QScrollArea支持鼠標拖動的操作方法

    今天小編就為大家分享一篇PyQt5實現讓QScrollArea支持鼠標拖動的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Django Serializer HiddenField隱藏字段實例

    Django Serializer HiddenField隱藏字段實例

    這篇文章主要介紹了Django Serializer HiddenField隱藏字段實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python opencv之分水嶺算法示例

    python opencv之分水嶺算法示例

    這篇文章主要介紹了python opencv之分水嶺算法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論