定時器執(zhí)行循環(huán)任務(wù):
?
- 知識儲備
- Timer(interval, function, args=None, kwargs=None)
- interval ===》 時間間隔 單位為s
- function ===》 定制執(zhí)行的函數(shù)
- 使用threading的 Timer 類
- start() 為通用的開始執(zhí)行方法
- cancel ()為取消執(zhí)行的方法
- 普通單次定時執(zhí)行
from threading
import
Timer
import
time
# 普通單次定時器
def handle():
print(
"普通單次定時器 函數(shù)被執(zhí)行"
);
t1
=Timer(interval=1,function=
handle);
t1.start();
?
定時循環(huán)執(zhí)行
from threading import Timer
import time
# 循環(huán)定時器
def loop_handle():
print("循環(huán)定時器定時器 函數(shù)被執(zhí)行");
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執(zhí)行5s
線程池技術(shù)
?
?
基本概念
- 在程序啟動時就創(chuàng)建好若干個線程,并保存到內(nèi)存中 。 當(dāng)線程啟動并執(zhí)行完成之后,并不做銷毀處理,而是等待下次再使用。
i:節(jié)約了創(chuàng)建進程 銷毀進程的時間,大大降低進程的開銷
- 實現(xiàn)
-
搶占式:線程池中的線程執(zhí)行順序不固定。該方式使用 ThreadPoolExecutor的 submit ()方法實現(xiàn)。
- 具體執(zhí)行那個線程是隨機的, 并且執(zhí)行的函數(shù)也可以不一致
- 那個線程執(zhí)行的函數(shù)出現(xiàn)了崩潰,不影響整個線程池的其他線程的運行
- 使用with 語法 進行簡化操作
- 非搶占式:線程將按照調(diào)用的順序執(zhí)行 。 此方式使用 ThreadPoolExecutor 的 map ()方法來實現(xiàn)
- 每個線程處理的函數(shù)都是一致的,一個線程執(zhí)行的函數(shù)崩潰,整體就崩潰
基本code
from concurrent.futures
import
ThreadPoolExecutor # 導(dǎo)入線程池
import
time
def printName(name):
print(
"名字"
,name);
time.sleep(
2
);
nameList
=['Tom','jirl','steam'
];
# 搶占式線程池
start2
=
time.time();
with ThreadPoolExecutor(
3
) as executor:
for
i in nameList:# 因為每次執(zhí)行的函數(shù)不一致,所以參數(shù)要分開傳遞
executor.submit(printName,i);
end2
=
time.time();
print(
"2 speed:",str(end2-
start2));
#非搶占式線程池
?
?
線程數(shù)量公式:
公式
?
?
經(jīng)驗
(1 )初始化一定數(shù)量的線程。
( 2 )在多次實驗中遞增或遞減線程數(shù)量 ,測試運行性能 。
(3 )確定最憂 的線程數(shù)量。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

