Python線程池模塊ThreadPoolExecutor用法分析
本文實(shí)例講述了Python線程池模塊ThreadPoolExecutor用法。分享給大家供大家參考,具體如下:
python3內(nèi)置的有Threadingpool和ThreadPoolExecutor模塊,兩個(gè)都可以做線程池,當(dāng)然ThreadPoolExecutor會(huì)更好用一些,而且也有ProcessPoolExecutor進(jìn)程池模塊,使用方法基本一致。
首先導(dǎo)入模塊
from concurrent.futures import ThreadPoolExecutor
使用方法很簡(jiǎn)單,最常用的可能就是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)來(lái)做,返回的是一個(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()來(lái)取返回值
兩種方式差不多,都可以很好的實(shí)現(xiàn)多線程任務(wù),切記一定使用with!
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門教程》及《Python常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python?列表套json字典根據(jù)相同的key篩選數(shù)據(jù)
這篇文章主要介紹了python?列表套json字典根據(jù)相同的key篩選數(shù)據(jù),文章基于python的相關(guān)資料展開詳細(xì)的內(nèi)容介紹需要的小伙伴可以參考一下2022-04-04
pytorch的backward()的底層實(shí)現(xiàn)邏輯詳解
自動(dòng)微分是一種計(jì)算張量(tensors)的梯度(gradients)的技術(shù),它在深度學(xué)習(xí)中非常有用,這篇文章主要介紹了pytorch的backward()的底層實(shí)現(xiàn)邏輯,需要的朋友可以參考下2023-11-11
python 多線程對(duì)post請(qǐng)求服務(wù)器測(cè)試并發(fā)的方法
今天小編就為大家分享一篇python 多線程對(duì)post請(qǐng)求服務(wù)器測(cè)試并發(fā)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python selenium 無(wú)界面瀏覽器的實(shí)現(xiàn)
有時(shí)我們不想讓瀏覽器窗口跳出來(lái),而是想在后臺(tái)進(jìn)行操作,這就需要用到無(wú)界面瀏覽器,本文主要介紹了python selenium 無(wú)界面瀏覽器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
PyCharm 解決找不到新打開項(xiàng)目的窗口問(wèn)題
這篇文章主要介紹了PyCharm 解決找不到新打開項(xiàng)目的窗口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
python無(wú)法識(shí)別vim中文代碼的解決方案
這篇文章主要介紹了python無(wú)法識(shí)別vim中文代碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

