最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python定時(shí)器線程池原理詳解

 更新時(shí)間:2020年02月26日 11:04:06   作者:---WeiGeH  
這篇文章主要介紹了Python定時(shí)器線程池原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Python定時(shí)器線程池原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

定時(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));
#非搶占式線程池

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

贵州省| 唐山市| 宁蒗| 山东省| 隆德县| 盈江县| 手游| 榕江县| 青铜峡市| 商南县| 犍为县| 桓台县| 彭阳县| 涟水县| 安多县| 建平县| 天全县| 巍山| 普陀区| 四川省| 乳源| 舞阳县| 内江市| 伊春市| 新宁县| 普定县| 贡嘎县| 旺苍县| 昭通市| 砚山县| 桓仁| 襄汾县| 巩留县| 清远市| 天全县| 绥阳县| 望谟县| 政和县| 肥西县| 泰州市| 锡林浩特市|