定時(shí)器執(zhí)行循環(huán)任務(wù):
?
- 知識(shí)儲(chǔ)備
- Timer(interval, function, args=None, kwargs=None)
- interval ===》 時(shí)間間隔 單位為s
- function ===》 定制執(zhí)行的函數(shù)
- 使用threading的 Timer 類
- start() 為通用的開始執(zhí)行方法
- cancel ()為取消執(zhí)行的方法
- 普通單次定時(shí)執(zhí)行
from threading import Timer import time # 普通單次定時(shí)器 def handle(): print( "普通單次定時(shí)器 函數(shù)被執(zhí)行" ); t1 =Timer(interval=1,function= handle); t1.start();
?
定時(shí)循環(huán)執(zhí)行
from threading import Timer import time # 循環(huán)定時(shí)器 def loop_handle(): print("循環(huán)定時(shí)器定時(shí)器 函數(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);# 對(duì)主線程停止5s; t2.cancel(); # t2 在主main 線程阻塞5s t2執(zhí)行5s
線程池技術(shù)
?
?
基本概念
- 在程序啟動(dòng)時(shí)就創(chuàng)建好若干個(gè)線程,并保存到內(nèi)存中 。 當(dāng)線程啟動(dòng)并執(zhí)行完成之后,并不做銷毀處理,而是等待下次再使用。
i:節(jié)約了創(chuàng)建進(jìn)程 銷毀進(jìn)程的時(shí)間,大大降低進(jìn)程的開銷
- 實(shí)現(xiàn)
-
搶占式:線程池中的線程執(zhí)行順序不固定。該方式使用 ThreadPoolExecutor的 submit ()方法實(shí)現(xiàn)。
- 具體執(zhí)行那個(gè)線程是隨機(jī)的, 并且執(zhí)行的函數(shù)也可以不一致
- 那個(gè)線程執(zhí)行的函數(shù)出現(xiàn)了崩潰,不影響整個(gè)線程池的其他線程的運(yùn)行
- 使用with 語(yǔ)法 進(jìn)行簡(jiǎn)化操作
- 非搶占式:線程將按照調(diào)用的順序執(zhí)行 。 此方式使用 ThreadPoolExecutor 的 map ()方法來實(shí)現(xiàn)
- 每個(gè)線程處理的函數(shù)都是一致的,一個(gè)線程執(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:# 因?yàn)槊看螆?zhí)行的函數(shù)不一致,所以參數(shù)要分開傳遞 executor.submit(printName,i); end2 = time.time(); print( "2 speed:",str(end2- start2)); #非搶占式線程池
?
?
線程數(shù)量公式:
公式
?
?
經(jīng)驗(yàn)
(1 )初始化一定數(shù)量的線程。
( 2 )在多次實(shí)驗(yàn)中遞增或遞減線程數(shù)量 ,測(cè)試運(yùn)行性能 。
(3 )確定最憂 的線程數(shù)量。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
