代码
from queue import Queue
import threading
from concurrent.futures import ThreadPoolExecutor
q = Queue(100)
mark = False
tname = lambda: threading.currentThread().getName()
def prod():
for n in range(10000):
q.put(str(n))
global mark
mark = True
print('({}) 生产者结束 \n'.format(tname()))
def cons():
while True:
if q.empty() and mark:
print('({}) 消费者结束 \n'.format(tname()))
break
v = q.get()
print('({}) 拿到了 {} \n'.format(tname(), v))
def cons_():
cons_num = 3
pool = ThreadPoolExecutor(max_workers=cons_num)
for _ in range(cons_num):
pool.submit(cons)
if __name__ == '__main__':
threading.Thread(target=prod).start()
threading.Thread(target=cons_).start()