python 多线程实现生产者与消费者模型

# 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()
复制代码


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值