Python的定時器與執行緒池

2022-03-12 10:41:53 字數 1612 閱讀 3895

timer(interval, function, args=none, kwargs=none)

interval ===》 時間間隔 單位為s

function ===》 定製執行的函式

start() 為通用的開始執行方法

cancel ()為取消執行的方法

from threading import

timer

import

time

# 普通單次定時器

def handle():

print("普通單次定時器 函式被執行");

t1=timer(interval=1,function=handle);

t1.start();

定時迴圈執行

from threading import timer

import time

# 迴圈定時器

def loop_handle():

print("迴圈定時器定時器 函式被執行");

global t2;

t2=timer(interval=1,function=loop_handle);

t2.start();

t2=timer(interval=1,function=loop_handle);

t2.start();

time.sleep(5);# 對主線程停止5s;

t2.cancel(); # t2 在主main 執行緒阻塞5s t2執行5s

基本概念

i:節約了建立程序 銷毀程序的時間,大大降低程序的開銷

搶占式:執行緒池中的執行緒執行順序不固定。該方式使用 threadpoolexecutor的 submit ()方法實現。具體執行那個執行緒是隨機的, 並且執行的函式也可以不一致

那個執行緒執行的函式出現了崩潰,不影響整個執行緒池的其他執行緒的執行

使用with 語法 進行簡化操作

每個執行緒處理的函式都是一致的,乙個執行緒執行的函式崩潰,整體就崩潰

基本code

from concurrent.futures import

threadpoolexecutor # 匯入執行緒池

import

time

def printname(name):

print("名字",name);

time.sleep(2);

namelist=['tom','jirl','steam'];

# 搶占式執行緒池

start2=time.time();

with threadpoolexecutor(3) as executor:

fori in namelist:# 因為每次執行的函式不一致,所以引數要分開傳遞

executor.submit(printname,i);

end2=time.time();

print("2 speed:",str(end2-start2));

#非搶占式執行緒池

執行緒數量公式:

公式經驗(1 )初始化一定數量的執行緒。

( 2 )在多次實驗中遞增或遞減執行緒數量 ,測試執行效能 。

(3 )確定最憂 的執行緒數量。

執行緒池之定時器

如果你開發過win32應用程式,你應該知道設定定時器是它api中的一部分。在這種情況下,你必須建立乙個window來接收wm timer的訊息。我們所面臨的第乙個問題是,建立乙個window來接收訊息,但你卻無法控制台應用程式中應用。其二,基於訊息的執行有時不是很精確,並且如果你的應用程式要處理很多...

Python 執行緒定時器Timer

匯入執行緒模組 import threading timer threading.timer interval,function,args none,kwargs none 引數介紹 interval 定時器間隔,間隔多少秒之後啟動定時器任務 單位 秒 function 執行緒函式 args 執行緒...

Qt 執行緒與定時器

我寫的簡單測試 the qtimer class provides repetitive and single shot timers.上面這段話摘自qt助手文件,我們使用qtimer類定義乙個定時器,它可以不停重複,也可以只進行一次便停止。使用起來也很簡單 qtimer timer newqtim...