您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在Python中使用ThreadPoolExecutor線程池模塊,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
具體如下:
python3內置的有Threadingpool和ThreadPoolExecutor模塊,兩個都可以做線程池,當然ThreadPoolExecutor會更好用一些,而且也有ProcessPoolExecutor進程池模塊,使用方法基本一致。
首先導入模塊
from concurrent.futures import ThreadPoolExecutor
使用方法很簡單,最常用的可能就是map方法和submit+as_completed
注意,一定要使用with,而不要使用for,如果你一定要用for,那么一定要手動進行executor.shutdown
,而你使用了with方法的話,再with方法內部已經實現了wait()
,在使用完畢之后可以自行關閉線程池,減少資源浪費。
使用map
with ThreadPoolExecutor(max_workers=2) as executor: result = executor.map(map_fun, itr_arg) '''map_fun:你傳入的要執行的map函數 itr_arg:一個可迭代的參數,可以是列表字典等可迭代的對象 基本上和python的map函數一樣 注意result并不是你map_fun返回的結果,而是一個生成器,如果要從中去結果,你可以使用列表生成式或者其他你想使用的方法 ''' for res in result: print(res) #這個res就是你map_fun返回的結果,你可以在這里做進一步處理
使用submit+as_completed也可以很靈活
with ThreadPoolExecutor(max_workers=2) as executor: future= executor.submit(fun, args) ''' 在這里你可以使用for循環來做,返回的是一個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()) #循環遍歷時用.result()來取返回值
關于如何在Python中使用ThreadPoolExecutor線程池模塊就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。