#!/usr/bin/env python
# -*- coding: utf-8 -*-
concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。
import sys
from concurrent.futures import threadpoolexecutor, as_completed, wait
from multiprocessing import manager
manager().dict()
執行緒池主線程可以獲取某乙個執行緒的狀態或者某乙個任務的狀態以及返回值
當乙個執行緒完成的時候讓主線程立即知道
import time
def task(num):
time.sleep(num)
print("thread", num)
return num
def normalusage():
# 例項化執行緒池並設定執行緒池大小
executor = threadpoolexecutor(max_workers=5)
# 通過submit提交執行的函式到執行緒池,並返回futures的類物件,這裡是立即返回非阻塞
task1 = executor.submit(task, (1))
task2 = executor.submit(task, (2))
# done()方法用於判定某個任務十分完成
print(task1.done())
# result() 方法可以獲取返回值,阻塞的方法
print(task1.result())
# 關閉執行緒池
executor.shutdown(wait=true)
def bbb():
executor = threadpoolexecutor(max_workers=5)
# 如何已經成功的任務的返回
tlist =
for num in range(10):
# 主要就是 as_completed()方法,這是乙個生成器,傳遞列表進去,這個列表就是包含執行緒的列表
for future in as_completed(tlist):
data = future.result()
print(data)
executor.shutdown(wait=true)
def ccc():
# 例項化執行緒池並設定執行緒池大小
executor = threadpoolexecutor(max_workers=5)
# 通過submit提交執行的函式到執行緒池,並返回futures的類物件,這裡是立即返回非阻塞
task1 = executor.submit(task, (1))
task2 = executor.submit(task, (2))
# 等待執行緒完成後再執行。return_when 是什麼時候返回,預設是所有執行緒執行完畢,你可以設定 first_completed 第乙個執行緒完成就不阻塞了
wait([task1, task2], return_when="all_completed")
print("main")
executor.shutdown(wait=true)
if __name__ == '__main__':
ccc()
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...
Python 執行緒池
給出乙個任務,然後交給執行緒池完成,執行緒池可以設定最大執行緒的數量,所以他會一次執行三個 from concurrent.futures import threadpoolexecutor import time 簡單的執行緒池使用 def consume num time.sleep 2 pri...