Python線程池模塊ThreadPoolExecutor用法分析
本文實例講述了Python線程池模塊ThreadPoolExecutor用法。分享給大家供大家參考,具體如下:
python3內(nèi)置的有Threadingpool和ThreadPoolExecutor模塊,兩個都可以做線程池,當然ThreadPoolExecutor會更好用一些,而且也有ProcessPoolExecutor進程池模塊,使用方法基本一致。
首先導入模塊
from concurrent.futures import ThreadPoolExecutor
使用方法很簡單,最常用的可能就是map方法和submit+as_completed
注意,一定要使用with,而不要使用for,如果你一定要用for,那么一定要手動進行executor.shutdown
,而你使用了with方法的話,再with方法內(nèi)部已經(jīng)實現(xiàn)了wait()
,在使用完畢之后可以自行關(guān)閉線程池,減少資源浪費。
使用map
with ThreadPoolExecutor(max_workers=2) as executor: result = executor.map(map_fun, itr_arg) '''map_fun:你傳入的要執(zhí)行的map函數(shù) itr_arg:一個可迭代的參數(shù),可以是列表字典等可迭代的對象 基本上和python的map函數(shù)一樣 注意result并不是你map_fun返回的結(jié)果,而是一個生成器,如果要從中去結(jié)果,你可以使用列表生成式或者其他你想使用的方法 ''' for res in result: print(res) #這個res就是你map_fun返回的結(jié)果,你可以在這里做進一步處理
使用submit+as_completed也可以很靈活
with ThreadPoolExecutor(max_workers=2) as executor: future= executor.submit(fun, args) ''' 在這里你可以使用for循環(huán)來做,返回的是一個future對象 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): #這個futrure_list是你future對象的列表 print(res.result()) #循環(huán)遍歷時用.result()來取返回值
兩種方式差不多,都可以很好的實現(xiàn)多線程任務(wù),切記一定使用with
!
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python中pandas.read_csv()函數(shù)的深入講解
這篇文章主要給大家介紹了關(guān)于python中pandas.read_csv()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03Python SQLAlchemy基本操作和常用技巧(包含大量實例,非常好)
這篇文章主要介紹了Python的ORM框架SQLAlchemy基本操作和常用技巧,包含大量實例,非常好的一個學習SQLAlchemy的教程,需要的朋友可以參考下2014-05-05Python+Tableau廣東省人口普查可視化的實現(xiàn)
本文將結(jié)合實例代碼,介紹Python+Tableau廣東省人口普查可視化,第七次人口普查數(shù)據(jù)分析,繪制歷次人口普查人口數(shù)量變化圖,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06python讀取大型csv文件的操作方法(降低內(nèi)存占用)
遇到大型的csv文件時,pandas會把該文件全部加載進內(nèi)存,從而導致程序運行速度變慢,本文提供了批量讀取csv文件、讀取屬性列的方法,減輕內(nèi)存占用情況,文中有詳細的代碼示例,需要的朋友可以參考下2024-03-03