python 队列

队列简单使用:

# -*- 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()
原文地址:https://www.cnblogs.com/gaizhongfeng/p/8026834.html