# 首先導包
from concurrent.futures import threadpoolexecutor
# 建立執行緒池
executor = threadpoolexecutor(10)
# 測試方法
def test_function(num1, num2):
print(num1, num2)
return num1 + num2
# 第乙個引數為具體的方法,後面為方法的引數
future = executor.submit(test_function, 1, 2)
# future的result()方法可以獲取到函式的執行結果
print(future.result())
threadpoolexecutor(pool_count)
: pool_count代表建立執行緒的數量,會返回乙個該執行緒池的執行者物件,這個物件的submit()
方法和map()
方法,能夠使用執行緒池中的執行緒來執行我們指定的方法,並且返回乙個future
物件。future
物件的result()
方法,可以獲取我們方法執行的結果。如果方法一直沒有返回或執行完畢,則result()
方法會進入阻塞狀態,直到我們的方法返回或執行完畢。
from concurrent.futures import threadpoolexecutor
executor = threadpoolexecutor(10)
def test_function(num1, num2):
print(num1, num2)
return num1 + num2
result_iterators = executor.map(test_function, [1, 2], [5, 5])
for result in result_iterators:
print(result)
executor.map(function, 引數1_list, 引數2_list, 引數n_list)
引數1_list: 代表方法第乙個引數的列表
引數2_list: 代表方法第二個引數的列表
如:executor.map(test_function, [1, 2], [5, 5])
代表,執行test_function方法,第乙個執行緒的引數為1和5,第二個執行緒的引數為2和5。 執行緒1:test_function(1, 5) 結果為1 + 5 = 6 該方法返回的是乙個可迭代的物件,裡面直接包含了每個方法執行的結果,不需要呼叫result()方法。 詳情:
"""
結果
1 52 56
7
執行緒池入門 四 Future
型別 方法說明 boolean cancel boolean mayinterruptifrunning 試圖取消對此任務的執行。vget 如有必要,等待計算完成,然後獲取其結果。vget long timeout,timeunit unit 如有必要,最多等待為使計算完成所給定的時間之後,獲取其結...
python 執行緒池 Python的執行緒池
usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...
python 執行緒池 python執行緒池原始碼解析
本篇主要講下threadpoolexecutor的實現。由於業務量不大,且一直使用框架進行程式設計,對執行緒的理解一直很模糊,基本處於不想阻塞程式執行,起乙個執行緒啟動任務的階段。總感覺自己好像會執行緒一樣,實則一直處於一種懵懂狀態,通過一段時間檢視一些別人寫的原始碼,終於有所悟,也記錄下自己的學習...