中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用Python實現定時程序

發布時間:2022-03-29 16:17:03 來源:億速云 閱讀:200 作者:iii 欄目:移動開發

本篇內容主要講解“如何利用Python實現定時程序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何利用Python實現定時程序”吧!

定時器概念

什么是定時器呢?它是指從指定的時刻開始,經過一個指定時間,然后觸發一個事件,用戶可以自定義定時器的周期與頻率。

實現一個簡單的定時程序

方案一

在 Python 中,如何定義一個定時器函數呢?我們先看第一種方法。假設我們需要執行一個函數userCountFunc,這個函數需要每隔一個小時被執行一次。那么,我們可以這樣寫:

def main():
    startCronTask(userCountFunc, minutes=60)

if __name__ == "__main__":
    main()

如上面的代碼,我們在定義了一個 main 函數后,便定義了一個定時函數 startCronTask。第一個參數為函數名,第二個參數為時間,第二個參數表示多長時間后調用后面第一個參數的函數。第一個參數注意是函數對象,進行參數傳遞,用函數名(如 userCountFunc)表示該對象,不是函數執行語句 userCountFunc(),不然會報錯。那么,在實現這個函數時,需要引入定時功能,Python 中有一個定時任務模塊 BlockingScheduler:

from apscheduler.schedulers.blocking import BlockingScheduler

def startCronTask(task, **config):
    # BlockingScheduler
    scheduler = BlockingScheduler()
    scheduler.add_job(task, "interval", **config)
    scheduler.start()

定義完一個調度模塊之后,實際的定時調度功能就完成了。接下來,需要具體實現定時執行的邏輯函數 userCountFunc:

def userCountFunc():
    logger.info("count user")
    ...

這樣,對于方案一,實現的簡單的定時功能就完成了。

方案二

方案一中介紹的是 Python 自帶的 BlockingScheduler 模塊,Python 中除了可以通過 BlockingScheduler,還通過線程實現定時器 timer,來簡單的看下代碼:

import threading

def timerFunc():
    print("Hello World~")

timer = threading.Timer(1, timerFunc)
timer.start()

在上面的代碼中,定時器函數 threading.Timer 主要有2個參數,參數意義與方案一類似,接下來執行這段程序:

Hello World~
      
Process finished with exit code 0

我們發現只執行一遍,程序就結束了,但顯然不是我們想要的結果。其實,我們看下 Time 類,有這樣的一句解釋性注釋:Call a function after a specified number of seconds,我們發現上面在執行后并未循環執行,所以需要修改下:

import threading

def timerFunc():
    print("Hello World~")
    global timer
    timer = threading.Timer(10.5, timerFunc)
    timer.start()

timer = threading.Timer(3, timerFunc)
timer.start()

此時,我們可以看到輸出結果:

Hello World~

Hello World~

Hello World~
...

這里需要注意的是:必須在定時器執行函數內部重復構造定時器,因為定時器構造后只執行1次,必須循環調用。

另外,在上面的代碼中,我們其實還可以看到:threading.Timer(5.5, timerFunc),定時器間隔單位是秒,可以是浮點數,如5.5,0.9等,在執行函數 timerFunc 內部和外部中給的值可以不同。如上例中第一次執行 timerFunc 是3秒后,后面的都是10.5秒后執行。

接下來,我們再看看如何再一定時間結束定時功能。我們可以使用cancel停止定時器的工作,如下例:

import threading

def timerFunc():
    print("Hello World~")
    global timer
    timer = threading.Timer(10.5, timerFunc)
    timer.start()

timer = threading.Timer(3, timerFunc)
timer.start()

time.sleep(60)
timer.cancel()

上面的代碼表示:在定時器按照一定時間執行后,執行過程耗時60秒后停止定時操作功能,退出。顯示結果為:

Hello World~

Hello World~

Hello World~

Hello World~

Hello World~
...

Process finished with exit code 0

到此,相信大家對“如何利用Python實現定時程序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石城县| 游戏| 竹北市| 庐江县| 准格尔旗| 客服| 浮梁县| 东乡| 苍溪县| 隆林| 桦南县| 开封县| 丹凤县| 高唐县| 马龙县| 佛坪县| 鹤峰县| 定襄县| 鄂伦春自治旗| 乌鲁木齐县| 嘉兴市| 全椒县| 获嘉县| 安仁县| 长岭县| 九龙县| 贵溪市| 甘谷县| 类乌齐县| 崇义县| 临城县| 阿图什市| 惠东县| 阿克| 漠河县| 祁连县| 柘荣县| 贡山| 安远县| 黔西县| 清水河县|