最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年07月06日 08:36:18   作者:Lavender1  
在 Python 中,如何定義一個定時器函數呢?本文主要介紹了2種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

定時器概念

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

實現一個簡單的定時程序

方案一

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

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

if __name__ == '__main__':
    main()

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

from apscheduler.schedulers.blocking import BlockingScheduler

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

定義完一個調度模塊之后,實際的定時調度功能就完成了。接下來,需要具體實現定時執(zhí)行的邏輯函數 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個參數,參數意義與方案一類似,接下來執(zhí)行這段程序:

Hello World~
      
Process finished with exit code 0

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

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~
...

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

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

接下來,我們再看看如何再一定時間結束定時功能。我們可以使用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()

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

Hello World~

Hello World~

Hello World~

Hello World~

Hello World~
...

Process finished with exit code 0

到此這篇關于利用Python實現定時程序的方法的文章就介紹到這了,更多相關Python 定時程序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于pytorch的RNN實現字符級姓氏文本分類的示例代碼

    基于pytorch的RNN實現字符級姓氏文本分類的示例代碼

    當使用基于PyTorch的RNN實現字符級姓氏文本分類時,我們可以使用一個非常簡單的RNN模型來處理輸入的字符序列,并將其應用于姓氏分類任務,本文給大家舉了一個基本的示例代碼,需要的朋友可以參考下
    2023-12-12
  • Python中staticmethod和classmethod的作用與區(qū)別

    Python中staticmethod和classmethod的作用與區(qū)別

    今天小編就為大家分享一篇關于Python中staticmethod和classmethod的作用與區(qū)別,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python的pip有什么用

    python的pip有什么用

    在本篇文章里小編給大家整理的是關于python的pip作用等相關內容,有需要的朋友們可以學習下。
    2020-06-06
  • 解決Python print 輸出文本顯示 gbk 編碼錯誤問題

    解決Python print 輸出文本顯示 gbk 編碼錯誤問題

    這篇文章主要介紹了解決Python print 輸出文本顯示 gbk 編碼錯誤問題,本文給出了三種解決方法,需要的朋友可以參考下
    2018-07-07
  • Python3.8中使用f-strings調試

    Python3.8中使用f-strings調試

    這篇文章主要介紹了Python3.8中使用f-strings調試的相關知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 用Python實現大文本文件切割的方法

    用Python實現大文本文件切割的方法

    今天小編就為大家分享一篇用Python實現大文本文件切割的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 基于Python實現萬年歷制作

    基于Python實現萬年歷制作

    制作一個萬年歷是一個有趣的Python項目,它可以讓您查看任何年份的日歷并獲得特定日期的信息,下面我們就來看看具體是如何使用Python實現的吧
    2023-12-12
  • python讀取多類型文件夾中的文檔內容

    python讀取多類型文件夾中的文檔內容

    無論我們使用哪種編程語言,處理文件對于每個程序員都是必不可少的,本文主要介紹了python讀取多類型文件夾中的文檔內容,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • python批量同步web服務器代碼核心程序

    python批量同步web服務器代碼核心程序

    這篇文章主要介紹了python批量同步web服務器代碼核心程序,需要的朋友可以參考下
    2014-09-09
  • Python字符串對象實現原理詳解

    Python字符串對象實現原理詳解

    這篇文章主要介紹了Python字符串對象實現原理詳解,在Python世界中將對象分為兩種:一種是定長對象,比如整數,整數對象定義的時候就能確定它所占用的內存空間大小,另一種是變長對象,在對象定義時并不知道是多少,需要的朋友可以參考下
    2019-07-07

最新評論

舒城县| 横山县| 马关县| 玛多县| 博客| 济宁市| 新宁县| 东城区| 宜州市| 平湖市| 平南县| 河西区| 汶上县| 庄浪县| 郯城县| 雷州市| 新宾| 上饶县| 东乌| 鹿邑县| 夹江县| 西安市| 神池县| 铁岭市| 喀喇沁旗| 五河县| 锦州市| 大石桥市| 罗源县| 石首市| 莱芜市| 虎林市| 台安县| 桃园县| 佛坪县| 屯昌县| 防城港市| 蕲春县| 无为县| 乾安县| 静海县|