zoukankan      html  css  js  c++  java
  • 简述生产者消费者模型

    # 生产包子和消费包子模型,一对多 线程(threading),队列(queue) 先入先出FIFO
    # 线程之间不直接通信(queue阻塞,缓冲区)
    
    
    # 队列方法
    # Queue.Queue(maxsize=0)
    # FIFO, 如果maxsize小于1就表示队列长度无限
    # Queue.LifoQueue(maxsize=0)
    # LIFO, 如果maxsize小于1就表示队列长度无限 先入后出
    # Queue.qsize()
    # 返回队列的大小
    # Queue.empty()
    # 如果队列为空,返回True, 反之False
    # Queue.full()
    # 如果队列满了,返回True, 反之False
    # Queue.get([block[, timeout]])   读队列,timeout等待时间
    # Queue.put(item, [block[, timeout]])   写队列,timeout等待时间
    # Queue.queue.clear()  清空队列
    
    
    
    
    import queue, threading, random, time
    
    q = queue.Queue(maxsize=10)  # 限制最大生产数 FIFO
    
    
    def sheng():
        count = 0
        while True:  # 死循环生产者一直生产
            time.sleep(1)
            q.put(count)        # 放入队列
            print("生产第{0}个包子".format(count))
            if q.full():                 # 判断队列是否溢出
                print("队列满了")
                # q.join()                      # 阻塞 当加了队列溢出,队列将一直处于阻塞状态,将不会生产
            count += 1
    
    
    def xiao(name):
        count = 0
        while True:
            time.sleep(1)
            if not q.empty():                 # 判断队列是否为空
                data = q.get()            # 队列内取数据
                # q.task_done()                
                # q.join()
                print(data)
                print('33[32;1m消费者 %s 消费了第 %s 个包子...33[0m' % (name, data))
            else:
                print("-----暂时没得包子了----")
            count += 1
    
    
    if __name__ == "__main__":
        s1 = threading.Thread(target=sheng,)
        x1 = threading.Thread(target=xiao, args=("Wang",))
        x2 = threading.Thread(target=xiao, args=("Li",))
        s1.start()
        x1.start()
        x2.start()                                                
    deque 与 queue 区别参照 https://www.cnblogs.com/MY0213/p/8997461.html
    多线程
    多进程参照 https://www.cnblogs.com/yuanchenqi/articles/6755717.html
  • 相关阅读:
    模拟器 waiting for debugger
    2020年春节抢票神器
    spyder crashed during last session
    D盘 自动创建 保存的图片 本机照片
    北邮 自考 数据结构 考核指导
    对无相关性的样本特征进行onehot编码
    opencv的Kmeans聚类算法应用
    adaboost详解
    ROC与AUC曲线绘制
    K近邻算法核心函数详解
  • 原文地址:https://www.cnblogs.com/jum-bolg/p/10915632.html
Copyright © 2011-2022 走看看