python 執行緒池實用總結

2022-04-01 03:40:20 字數 2749 閱讀 5962

執行緒池的兩張方法 submit 和map

from concurrent.futures import

threadpoolexecutor

import

time

#def

sayhello(a):

time.sleep(2)

return

"hello:

"+adef

main():

seed = ["

a","

b","c"

]

#不使用執行緒

start1 =time.time()

for each in

seed:

t1 =sayhello(each)

print

(t1)

end1 =time.time()

print("

time1:

"+str(end1-start1))

print('

------------------submit----------------------')

#執行緒池submit用法

#1.先把值存放在列表中

#2.在遍歷列表取返回值

#3.將遍歷獲取的結果存放在列表中

start2 =time.time()

lst =

result_lst =

with threadpoolexecutor(3) as executor:

for each in

seed:

t2 =executor.submit(sayhello, each)

for i in

lst:

print

(i.result())

print

(result_lst)

end2 =time.time()

print("

time2:

"+str(end2-start2))

print('

---------------map----------------------')

#執行緒池map的用法

#map的引數:迭代器

#map的返回值是:生成器

#1、獲取生成器(或直接使用list強制裝換)

#2、遍歷取值

#3、將遍歷的結果放入新的列表

map_lst =

start3 =time.time()

with threadpoolexecutor(3) as executor1:

t3 =executor1.map(sayhello, seed)

for t in

t3:

print

(map_lst)

end3 =time.time()

print("

time3:

"+str(end3-start3))

if__name__ == '

__main__':

main()

other

from concurrent.futures import

threadpoolexecutor

import

time

#def

sayhello(a):

time.sleep(2)

foo = [1, a]

return

foodef

main():

seed = ["

a","

b","c"

]

#不使用執行緒

start1 =time.time()

for each in

seed:

t1 =sayhello(each)

print

(t1)

end1 =time.time()

print("

time1:

"+str(end1-start1))

print('

---------------map----------------------')

#執行緒池map的用法

#map 的結果是迭代器,使用for迴圈取值

map_lst =

start3 =time.time()

with threadpoolexecutor(3) as executor1:

t3 =executor1.map(sayhello, seed)

for t in

t3: map_lst.extend(t)

print

(map_lst)

end3 =time.time()

print("

time3:

"+str(end3-start3))

if__name__ == '

__main__':

main()

區別

map:

1、提交的任務的函式是一樣的

2、引數:只需要提交一次目標函式,目標函式的引數放在乙個迭代器(列表,字典)

submit:

1、提交的任務函式是不一樣的,或者執行的過程之可能出現異常(使用map執行過程中發現問題會直接丟擲錯誤)

2、引數:submit每次都需要提交乙個目標函式和對應的引數

結果:map可以保證輸出的順序, submit輸出的順序是亂的

執行緒池的簡單實用

c 執行緒池threadpool的用法 最近,因為做專案的關係,用到了很多和執行緒有關的東西。由於以前對執行緒只是有乙個概括的了解,並沒有深入的研究過,所以在面對一些問題時,總會感覺到有心無力,為此也花費了大量的時間和精力。為了鞏固這方面的知識,特寫此文章和大家分享。1 最簡單的執行緒例子 clas...

python 執行緒池 Python的執行緒池

usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...

執行緒池總結

執行緒池基本思想 是一種物件池的思想,開闢一塊記憶體空間,裡面存放了眾多 未死亡 的執行緒,池中線程執行排程 由池管理器來處理。當有執行緒任務時,從池中取一根,執行完後執行緒物件歸池,這樣可以避免反覆建立執行緒物件鎖帶來的效能開銷,節約系統資源。1 動態建立執行緒池 2 建立固定大小的執行緒池 3 ...