2019-09-06 10:14:09 4855瀏覽
本篇文章扣丁學(xué)堂Python培訓(xùn)小編給讀者們分享一下Python線程池模塊ThreadPoolExecutor用法,文中結(jié)合實(shí)例形式分析了Python線程池模塊ThreadPoolExecutor的導(dǎo)入與基本使用方法,對(duì)此感興趣的小伙伴就隨小編來了解一下吧。
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()來取返回值
最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會(huì)越來越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】
查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>