Python3 執行緒池問題

2021-10-10 20:46:10 字數 1157 閱讀 5990

執行緒池:一種執行緒使用模式。執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過分排程。可用執行緒數量應該取決於可用的併發處理器、處理器核心、記憶體、網路sockets等的數量。 例如,執行緒數一般取cpu數量+2比較合適,執行緒數過多會導致額外的執行緒切換開銷。

任務排程以執行執行緒的常見方法是使用同步佇列,稱作任務佇列。池中的執行緒等待佇列中的任務,並把執行完的任務放入完成佇列中。

執行緒池的基類是 concurrent.futures 模組中的 executor,executor 提供了兩個子類,即 threadpoolexecutor 和 processpoolexecutor,其中 threadpoolexecutor 用於建立執行緒池,而 processpoolexecutor 用於建立程序池。

如果使用執行緒池/程序池來管理併發程式設計,那麼只要將相應的 task 函式提交給執行緒池/程序池,剩下的事情就由執行緒池/程序池來搞定。

舉個例子:

def test

(value1, value2=none)

:print

('bbb'

,value1, value2)

return

'finished'

from concurrent.futures import threadpoolexecutor

threadpool =

threadpoolexecutor

(max_workers=

4, thread_name_prefix=

"test_"

)for i in

range(0

,10):

future = threadpool.

submit

(test, i,i+

1)

輸出如下:

bbb 0

1 bbb 1

2 bbb 2

3 bbb 3

4 bbb 4

5 bbb 5

6 bbb 6

7 bbb 7

8 bbb 8

9 bbb 9

10

Python3多執行緒

學習python執行緒 python3 執行緒中常用的兩個模組為 thread threading 推薦使用 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為了相容性,python3 將 thread 重新命名為...

python3 執行緒死鎖

所謂死鎖 是指兩個或兩個以上的程序或執行緒在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序,如下就是死鎖 code from threading import thread,lock ...

python3 多執行緒

多執行緒簡介 執行緒 thread 也稱輕量級程序,時作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,時程序中的實際運作單位。執行緒自身不擁有資源,只擁有一些在執行中必不可少的資源,但他可與同屬乙個程序的其他執行緒共享程序所擁有的全部資源。乙個執行緒可以建立和撤銷另乙個執行緒,同一程序中的多...