队列简单使用:
# -*- coding: utf-8 -*- ''' 队列的作用: 1. 解耦 2. 提高效率 queue.Queue() 先进先出 queue.LifoQueue() 后进先出 queue.priorityQueue() 设置优先级的队列 Queue.put(item,block=True,timeout=None) 放数据 Queue.full() 判断队列是否是满的 Queue.empty() 判断队列是否为空 Queue.qsize() 队列大小 Queue.get() 取队列中的数据, 如果队列中没有数据 将会卡住 Queue.get_nowait() 也是取队列中的数据,区别是当队列没有数据,就会抛出异常,相当于Queue.get(block=false) ''' import queue #默认没有限制大小 q = queue.Queue() q.put("d1") q.put("d2") q.put("d3") #输出queue 大小 print(q.qsize()) #取数据 print(q.get()) print(q.get()) print(q.get_nowait()) print("------------------") q2 = queue.LifoQueue() q2.put("f1") q2.put("f2") q2.put("f3") print(q2.qsize()) print(q2.get()) print(q2.get()) print(q2.get_nowait()) print("******************") q3= queue.PriorityQueue() q3.put((3,"p1")) q3.put((1,"p2")) q3.put((2,"p3")) print(q3.get()) print(q3.get()) print(q3.get())
实现生产者消费者:
# -*- coding: utf-8 -*- import threading import queue import time q = queue.Queue(10) def producer(name): count=1 while True: q.put("包子 %s"%(count)) print("生成了包子 ",count) count+=1 time.sleep(1) def consumer(name): # while q.qsize()>0: while True: print("%s 吃包子 %s"%(name ,q.get())) time.sleep(1) p = threading.Thread(target=producer,args=("xiaoqiang",)) c = threading.Thread(target=consumer,args=("wangwang",)) c1 = threading.Thread(target=consumer,args=("wangcai",)) p.start() c.start() c1.start()