Python(執行緒池)

2021-09-10 02:51:54 字數 1111 閱讀 1755

官方解釋:執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後自動啟動這些任務。執行緒池執行緒都

是後台執行緒。每個執行緒都使用預設的堆疊大小,以預設的優先順序執行,並處於多執行緒單元中。如果某個執行緒在託管代

碼中空閒(如正在等待某個事件),則執行緒池將插入另乙個輔助線程來使所有處理器保持繁忙。如果所有執行緒池執行緒都

始終保持繁忙,但佇列中包含掛起的工作,則執行緒池將在一段時間後建立另乙個輔助線程但執行緒的數目永遠不會超過

最大值。超過最大值的執行緒可以排隊,但他們要等到其他執行緒完成後才啟動。

通俗解釋:只建立指定個執行緒,放入執行緒池中,當執行緒把當前任務執行完後,再為此程序分配新的任務,直至

任務全部執行完畢,避免了重複建立、銷毀執行緒所帶來的開銷(時間等)。

執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個執行緒,等待著監督管理者分配

可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分用,

還能防止過分排程。

# python3.2版本之後才有的;

from concurrent.futures import threadpoolexecutor

def job(num):

# 需要執行的任務

print("這是乙個%s任務" %(num))

return "執行結果:%s" %(num)

if __name__ == '__main__':

# 1. 例項化線城池物件,線城池裡面包含5個執行緒執行任務;

pool = threadpoolexecutor(max_workers=5)

futures =

for i in range(1000):

# 2. 往執行緒池裡面扔需要執行的任務, 返回的是乙個物件(_base.future()),

f1 = pool.submit(job, i)

# 判斷第乙個任務是否執行結束;

futures[0].done()

# 獲取任務的執行結果;

print(futures[0].result())

python 執行緒池 Python的執行緒池

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

python 執行緒池 python執行緒池原始碼解析

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

python執行緒池

import time threadpool為執行緒池模組 import threadpool deftest str print str time.sleep 2 if name main starttime time.time 建立執行緒池,最多建立的執行緒數為10 pool threadpoo...