python 執行緒池 futures使用

2021-09-20 12:23:48 字數 1519 閱讀 9071

# 首先導包 

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 5

2 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的實現。由於業務量不大,且一直使用框架進行程式設計,對執行緒的理解一直很模糊,基本處於不想阻塞程式執行,起乙個執行緒啟動任務的階段。總感覺自己好像會執行緒一樣,實則一直處於一種懵懂狀態,通過一段時間檢視一些別人寫的原始碼,終於有所悟,也記錄下自己的學習...