python定時器

餘生沒有餘生發表於2023-02-18

一.Timer

Timer為threading中的一個類,用來指定的秒數後呼叫函式,我們來看下Timer類的構造引數。

interval:設定定時執行的時間

function:設定定時的事件

args:引數

kwargs:字典型別的引數

下面我們看下具體的用法

1.無參的情況下

from threading import Timer
def fun():
    print("我是一個定時器")

t = Timer(3, fun)  # 宣告一個定時器,設定多少3s後執行
t.start()  # 啟動定時器

2.有參的情況下

from threading import Timer

def fun(name):
    print("我是一個定時器", name)

t = Timer(3, fun, args=("黎明",))  # 宣告一個定時器,設定多少s後執行
t.start()  # 啟動定時器

3.多參的情況下

from threading import Timer

def fun(name, age):
    print("我是一個定時器", name, age)

t = Timer(3, fun, args=("黎明", 1))  # 宣告一個定時器,設定多少s後執行
t.start()  # 啟動定時器

4.要想設定每隔3s執行一次

from threading import Timer

a = 0

def fun():
    global a
    a = a + 1
    print("我是一個定時器")
    t = Timer(3, fun)  # 宣告一個定時器,設定多少s後執行
    t.start()  # 啟動定時器
    if a == 3:
        t.cancel()  # 取消定時器

fun()

start():啟動定時任務

cancel():取消定時任務

二.schedule

schedule是一個輕量級的定時庫,可指定某秒/分/時/天/周的時間。

1.因為schedule是第三方庫,使用時需提前安裝

pip install schedule

2.設定格式

scedule.every(時間數).時間型別.do(job):表單個時間

scedule.every(時間數1).to(時間數2).時間型別.do(job):表一段時間範圍時間

3.具體用法

設定每隔5秒後執行一次

import schedule

def fun(name, age):
    print("我是一個定時器", name, age)

schedule.every(5).seconds.do(fun, "李明", 12)  # 每隔5s執行一次

while True:
    schedule.run_pending()  # 執行所有可以執行的任務

設定每隔1-5秒執行一次

import schedule

def fun(name, age):
    print("我是一個定時器", name, age)

schedule.every(1).to(5).seconds.do(fun, "李明", 12)  # 每隔1-5s執行一次

while True:
    schedule.run_pending()  # 執行所有可以執行的任務

下面設定分/時/天/周就不一一介紹了,直接貼寫法了

schedule.every(2).minutes.do(fun, "李明", 12)  # 每2min執行一次
schedule.every(2).minutes.at(":20").do(fun, "李明", 12)  # 每2min30s執行一次
schedule.every(2).to(2).minutes.do(fun, "李明", 12)  # 每2-5min執行一次
schedule.every().hour.do(fun, "李明", 12)  # 每2小時執行一次
schedule.every().hour.at(":40").do(fun, "李明", 12)  # 每小時40分鐘執行一次
schedule.every().day.do(fun, "李明", 12)  # 每天當前時間執行一次
schedule.every().day.at("15:15").do(fun, "李明", 12)  # 每天規定時間執行一次,
schedule.every().tuesday.at("15:19:30").do(fun, "李明", 12)  # 每週二15:19:30執行一次
schedule.every().tuesday.do(fun, "李明", 12)  # 每週二當前時間執行一次

週一至週五寫法

monday

tuesday

wednesday

thursday

friday

saturday

sunday

4.取消定時任務

clear():預設取消全部任務,也可透過tag取消指定的任務

import schedule


def fun(name, age):
    print("我是一個定時器", name, age)


schedule.every(1).to(5).seconds.do(fun, "李明", 14).tag("tag")  # 每隔1-5s執行一次,設定tag

while True:
    schedule.run_pending()  # 執行所有可以執行的任務
    schedule.clear("tag")  # 取消指定標籤的任務
    # schedule.clear()  # 取消全部任務

 

 

 

 

 

文章來源:https://www.cnblogs.com/lihongtaoya/ ,請勿轉載

 

相關文章