from concurrent.futures import threadpoolexecutor,as_completed
import time
deftest1
(num)
: lit1 =
for i in
range
(num)
: time.sleep(3)
return lit1
deftest2
(num)
: lit1 =
for i in
range
(num)
: time.sleep(5)
return lit1
deftest3
(num)
: lit1 =
for i in
range
(num)
: time.sleep(7)
return lit1
start_time=time.time(
)t = threadpoolexecutor(max_workers=5)
# 建立乙個最大容納數量為5的執行緒池
task_list=
[t.submit(test1,1)
,t.submit(test2,2)
,t.submit(test3,3)
]# task_list=
# for i in range(5):
# task1 = t.submit(test1, 1)
# task2 = t.submit(test2, 2) # 通過submit提交執行的函式到執行緒池中
# task3 = t.submit(test3, 3)
for future in as_completed(task_list)
:print
(future.done())
# 通過done來判斷執行緒是否完成
print
(future.result())
# 通過result來獲取返回值
end_time=time.time(
)print
(end_time-start_time)
執行結果:
true
[0]true
[0, 1]
true
[0, 1, 2]
21.00355625152588
參考:
Python 學習筆記 執行緒池
前面我們學校裡如何建立多執行緒,當我們接到乙個新的請求時,會建立乙個執行緒,執行完畢之後又銷毀掉這個執行緒。對於一些數目巨大,但是單個快速執行的任務,每個任務真正執行消耗的時間和執行緒建立銷毀的時間可能都差不多。這樣一來,執行緒的效率浪費的比較嚴重。因此可以考慮使用執行緒池的技術,預先建立一些空閒的...
python 執行緒池 Python的執行緒池
usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...
python 執行緒池 python執行緒池原始碼解析
本篇主要講下threadpoolexecutor的實現。由於業務量不大,且一直使用框架進行程式設計,對執行緒的理解一直很模糊,基本處於不想阻塞程式執行,起乙個執行緒啟動任務的階段。總感覺自己好像會執行緒一樣,實則一直處於一種懵懂狀態,通過一段時間檢視一些別人寫的原始碼,終於有所悟,也記錄下自己的學習...