国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python線程池模塊ThreadPoolExecutor用法分析

2020-01-04 13:40:43
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python線程池模塊ThreadPoolExecutor用法。分享給大家供大家參考,具體如下:

python3內(nèi)置的有Threadingpool和ThreadPoolExecutor模塊,兩個(gè)都可以做線程池,當(dāng)然ThreadPoolExecutor會(huì)更好用一些,而且也有ProcessPoolExecutor進(jìn)程池模塊,使用方法基本一致。

首先導(dǎo)入模塊

from concurrent.futures import ThreadPoolExecutor

使用方法很簡單,最常用的可能就是map方法和submit+as_completed

注意,一定要使用with,而不要使用for,如果你一定要用for,那么一定要手動(dòng)進(jìn)行executor.shutdown,而你使用了with方法的話,再with方法內(nèi)部已經(jīng)實(shí)現(xiàn)了wait(),在使用完畢之后可以自行關(guān)閉線程池,減少資源浪費(fèi)。

使用map

with ThreadPoolExecutor(max_workers=2) as executor:  result = executor.map(map_fun, itr_arg)  '''map_fun:你傳入的要執(zhí)行的map函數(shù)    itr_arg:一個(gè)可迭代的參數(shù),可以是列表字典等可迭代的對(duì)象    基本上和python的map函數(shù)一樣    注意result并不是你map_fun返回的結(jié)果,而是一個(gè)生成器,如果要從中去結(jié)果,你可以使用列表生成式或者其他你想使用的方法  '''  for res in result:    print(res) #這個(gè)res就是你map_fun返回的結(jié)果,你可以在這里做進(jìn)一步處理

使用submit+as_completed也可以很靈活

with ThreadPoolExecutor(max_workers=2) as executor:  future= executor.submit(fun, args)  '''  在這里你可以使用for循環(huán)來做,返回的是一個(gè)future對(duì)象  future_list=[]  for i in range(max_workers):    future= executor.submit(fun, args[i])    future_list.append(future)  '''  for res in ac_completed(futrue_list): #這個(gè)futrure_list是你future對(duì)象的列表    print(res.result())        #循環(huán)遍歷時(shí)用.result()來取返回值

兩種方式差不多,都可以很好的實(shí)現(xiàn)多線程任務(wù),切記一定使用with!

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 濮阳市| 年辖:市辖区| 郧西县| 普定县| 南岸区| 乃东县| 河东区| 开江县| 达日县| 武鸣县| 剑阁县| 逊克县| 汤原县| 镇康县| 唐山市| 东乌珠穆沁旗| 长顺县| 万盛区| 凤城市| 云霄县| 神池县| 鄂托克前旗| 台前县| 萨嘎县| 长治县| 镇巴县| 鄂托克旗| 横山县| 通化市| 雷州市| 双流县| 蒙山县| 瓦房店市| 安岳县| 祁东县| 寿宁县| 温宿县| 林甸县| 洛阳市| 永康市| 永康市|