threading中定時器Timer方法


threading中定時器Timer

定時器功能:在設置的多少時間后執行任務,不影響當前任務的執行

 

常用方法

from threading import Timer
t = Timer(interval, function, args=None, kwargs=None)
# interval 設置的時間(s) 
# function 要執行的任務
# args,kwargs 傳入的參數

t.start()  # 開啟定時器
t.cancel()  # 取消定時器

 

簡單示例

import time
from threading import Timer

def task(name):
    print('%s starts time: %s'%(name, time.ctime()))

t = Timer(3,task,args=('nick',))
t.start()
print('end time:',time.ctime())  # 開啟定時器后不影響主線程執行,所以先打印

-------------------------------------------------------------------------------
end time: Wed Aug  7 21:14:51 2019
nick starts time: Wed Aug  7 21:14:54 2019

 

驗證碼示例:60s后驗證碼失效

import random
from threading import Timer

# 定義Code類
class Code:
    # 初始化時調用緩存
    def __init__(self):
        self.make_cache()

    def make_cache(self, interval=60):
        # 先生成一個驗證碼
        self.cache = self.make_code()
        print(self.cache)
        # 開啟定時器,60s后重新生成驗證碼
        self.t = Timer(interval, self.make_cache)
        self.t.start()
	
    # 隨機生成4位數驗證碼
    def make_code(self, n=4):
        res = ''
        for i in range(n):
            s1 = str(random.randint(0, 9))
            s2 = chr(random.randint(65, 90))
            res += random.choice([s1, s2])
        return res
	
    # 驗證驗證碼
    def check(self):
        while True:
            code = input('請輸入驗證碼(不區分大小寫):').strip()
            if code.upper() == self.cache:
                print('驗證碼輸入正確')
                # 正確輸入驗證碼后,取消定時器任務
                self.t.cancel()
                break

obj = Code()
obj.check()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM