‘‘‘ queue队列,什么是队列?排队干一件事,谁去维护排队的关系?预防插队等 队列是一个有顺序的容器,有列表了还要队列干什么。 根本区别是列表里拿走一个数据,数据还在里面。队列是数据取走了就没了 为什么要用队列?提高双方效率,解耦合,生产者向队列里放,(队列),消费者从队列里取 1、先入先出 queue.Queue(maxsize=0) queue.put()放数据 (如果放满了再放就会阻塞,用queue.put(block=False)或q.put_nowait()抛异常,或者判断队列长度,为max就不取) queue.get()取数据 (如果取完了再取就会阻塞,用queue.get(block=False)或q.get_nowait()抛异常,或者判断队列长度,为0就不取) queue.qsize()大小 queue.full()大小限制 2、后进先出queue.LifoQueue(maxsize=0) 3、存储数据时设置优先级queue.ProrityQueue(maxsize=0) 放数据的时候排序了,queue.put((1,"alex"))改变元祖里的数字可以改顺序 ‘‘‘ ‘‘‘ 生产者消费者模型:利用队列,生产者和消费者通过队列关联。例如web负载均衡 ‘‘‘ import queue import threading import time q = queue.Queue(maxsize=10) def Producer(name): # 不停的向队列里生产骨头,当然可以有多个生产者 count = 1 while True: q.put("骨头{0}".format(count)) print("生产了{0}个骨头".format(count)) count += 1 time.sleep(1) def Consumer(name): # 不停的从队列里取骨头,当然可以有多个消费者 while True: print("{0}取到{1}并且吃了它".format(name, q.get())) time.sleep(0.5) p = threading.Thread(target=Producer, args=("alex",)) c1 = threading.Thread(target=Consumer, args=("张三",)) c2 = threading.Thread(target=Consumer, args=("李四",)) p.start() c1.start() c2.start()
原文地址:https://www.cnblogs.com/staff/p/9691647.html
时间: 2024-10-15 17:58:38