亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

利用Python實現定時程序的方法

瀏覽:6日期:2022-06-15 13:17:33
目錄定時器概念實現一個簡單的定時程序方案一方案二定時器概念

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

實現一個簡單的定時程序方案一

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

def main(): startCronTask(userCountFunc, minutes=60)if __name__ == ’__main__’: main()

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

from apscheduler.schedulers.blocking import BlockingSchedulerdef 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 threadingdef 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 threadingdef 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 threadingdef 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實現定時程序的方法的文章就介紹到這了,更多相關Python 定時程序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 91小视频在线观看 | 柠檬视频污 | 欧美日韩国产亚洲一区二区 | 亚洲 中文 欧美 日韩 在线人 | 91久久精品国产一区二区 | 一区二区免费 | 国产a级三级三级三级中国 国产a级午夜毛片 | 免费久 | 中国黄色片一级 | 最新久久精品 | 99在线精品视频免费观里 | 午夜精品久久久久久久久 | 日韩欧美一级毛片精品6 | 日韩国产第一页 | 999www成人免费视频 | 玉米视频污 | 日本在线日本中文字幕日本在线视频播放 | 久草视频在线免费看 | 黄色大片网站在线观看 | 国产精品国偷自产在线 | 麻豆视频一区二区 | 亚洲乱码一二三四区国产 | 强开小嫩苞一区二区三区l 婷婷丁香色综合狠狠色 | 中国日韩欧美中文日韩欧美色 | 国产区在线免费观看 | 一级香蕉视频在线观看 | 在线小视频国产 | 麻豆性视频 | 亚在线| 国内视频一区二区 | 狠狠色欧美亚洲狠狠色五 | 正在播放国产夫妻 | 97视频在线观看视频在线精品 | 99久久精品国产一区二区成人 | 尤物国产视频 | 国产一区二区三区美女在线观看 | 六月丁香啪啪 | 免费国产视频 | 日本亚洲精品无码专区 | 日本人成免费大片 | 在线观看色视频 |