1. 程式人生 > >利用threading模組和queue模組在python3直譯器上建立一個簡單的python執行緒池

利用threading模組和queue模組在python3直譯器上建立一個簡單的python執行緒池

python直譯器沒提供執行緒池模組,故在python3上自定義python執行緒池簡單版本,程式碼如下

#用threading queue 做執行緒池

import queue
import threading
class ThreadPool():
def __init__(self,arg):#建立佇列,在佇列每個位置放一個threading.Tread類
self.queue_obj = queue.Queue(arg)
for i in range(arg):
self.queue_obj.put(threading.Thread)
def thread_get(self):#執行這個方法後把得到的類threading.Tread返回
return self.queue_obj.get()
def thread_add(self):#把threading.Tread類放到佇列
self.queue_obj.put(threading.Thread)
def func(b,a):
b.thread_add() #用函式執行ThreadPool類裡的thread_add方法
print(a)

threading_pool = ThreadPool(5) #建立佇列為5的執行緒池,每個位置放一個threading.Thread
thread = threading_pool.thread_get() #threading.Thread
thread_obj = thread(target=func,args=(threading_pool,11,)) #建立執行緒,把threading_pool和11傳給func函式,達到用執行緒處理資料並且把threading.Thread類放到佇列
thread_obj.start()#執行執行緒