Python 線程定時器Timer


 

 

一.線程定時器Timer原理

    原理比較簡單,指定時間間隔后啟動線程,適用場景:完成定時任務,例如:定時提醒-鬧鍾等等.

# 導入線程模塊
import threading
 
timer = threading.Timer(interval, function, args=None, kwargs=None)

參數介紹:

    interval — 定時器間隔,間隔多少秒之后啟動定時器任務(單位:秒);

    function — 線程函數;

    args — 線程參數,可以傳遞元組類型數據,默認為空(缺省參數);

    kwargs — 線程參數,可以傳遞字典類型數據,默認為空(缺省參數);

二、測試代碼

from datetime import datetime
from threading import Timer
import time

'''
每個 10 秒打印當前時間。
'''
def timedTask():
    '''
    第一個參數: 延遲多長時間執行任務(單位: 秒)
    第二個參數: 要執行的任務, 即函數
    第三個參數: 調用函數的參數(tuple)
    '''
    Timer(10, task, ()).start()

# 定時任務
def task():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

if __name__ == '__main__':
    timedTask()
    while True:
        print(time.time())
        time.sleep(5)

運行結果:

1512486945.1196375 1512486950.119873 2017-12-05 23:15:50 1512486955.133385

三、Timer定時器每3秒執行任務

from threading import Timer
import psutil
import datetime

def MonitorSystem(logfile = None):
    cpuper = psutil.cpu_percent()
    mem = psutil.virtual_memory()
    memper = mem.percent
    now = datetime.datetime.now()
    ts = now.strftime('%Y-%m-%d %H:%M:%S')
    line = f'{ts} cpu:{cpuper}%, mem:{memper}%'
    print(line)
    if logfile:
        logfile.write(line)
    #啟動定時器任務,每三秒執行一次
    Timer(3, MonitorSystem).start()
MonitorSystem()

 

更多定時任務的實現方式: https://blog.51cto.com/huangyg/2367088


免責聲明!

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



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