代码:
import threading
import queue
import time
class threadPool:
def __init__(self,n):
self.q = queue.Queue()
for i in range(n): #开n个线程
threading.Thread(target=self.func,daemon=True).start()
def func(self): #线程内容
while True:
task = self.q.get() #获取数据
task()
print(threading.current_thread())
self.q.task_done() #计数器-1
def zhu(self,task): #主线程在里面执行,生产者
self.q.put(task) #在队列里面传入数据,计数器+1
def join(self):
self.q.join()
def func1():
time.sleep(1)
#测试代码
pool = threadPool(4)
pool.zhu(func1)
pool.zhu(func1)
pool.zhu(func1)
pool.zhu(func1)
pool.zhu(func1)
pool.zhu(func1)
pool.join()
图例: