# coding=utf-8
from queue import Queue
import threading,time
class Duo(object):
"""生产者与消费者模型"""
def __init__(self, num):
# 创建队列
self.queue = Queue()
self.num = num
def put_num(self):
for i in range(self.num):
# 添加数据
self.queue.put(i)
def get_num(self):
while True:
# 获取数据
q = self.queue.get()
print(q)
time.sleep(1)
# 宣告子线程结束
self.queue.task_done()
def run(self):
# 创建子线程
t1 = threading.Thread(target=self.put_num, daemon=True)
t2 = threading.Thread(target=self.get_num, daemon=True)
# 设置子线程线程守护,即主线程结束,
# 子线程结束和 daemon一个意思,
# 必须设置线程守护之后才能启动子线程
# t1.setDaemon(True)
# t2.setDaemon(True)
# 开启线程
t1.start()
t2.start()
# 设置主线程结束的条件
self.queue.join()
if __name__ == '__main__':
t = Duo(10)
t.run()
复制代码
python 多线程实现生产者与消费者模型
最新推荐文章于 2020-12-04 12:08:07 发布