#queue队列 #生产者消费者模型

Posted 颜言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#queue队列 #生产者消费者模型相关的知识,希望对你有一定的参考价值。

 

 

 

 

技术分享
  1 #queue队列  #生产者消费者模型
  2 
  3 #queue队列 #有顺序的容器
  4 #程序解耦
  5 #提高运行效率
  6 
  7 #class queue.Queue(maxsize=0) #先入先出
  8 #class queue.LifoQueue(maxsize=0)最后在第一
  9 #class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列#VIP客户
 10 
 11 #Queue.qsize()
 12 #Queue.empty() #return True if empty
 13 #Queue.full() # return True if full
 14 #Queue.put(item, block=True, timeout=None)
 15 
 16 ‘‘‘
 17 import queue
 18 q = queue.Queue()
 19 q.put(‘d1‘)
 20 q.put(‘d2‘)
 21 q.put(‘d3‘)
 22 print (q.qsize())
 23 
 24 print(q.get())
 25 print(q.get())
 26 print(q.get())
 27 print(q.get())#没有东西就卡死了
 28 ‘‘‘
 29 ‘‘‘
 30 import queue
 31 
 32 q = queue.Queue()
 33 q.put(1)
 34 q.put(2)
 35 q.put(3)
 36 
 37 print(q.get())
 38 print(q.get())
 39 print(q.get())
 40 #print(q.get())#没有东西就卡死了
 41 
 42 print(q.qsize())#查看
 43 q.get_nowait()#异常
 44 ‘‘‘
 45 ‘‘‘
 46 #后进先出
 47 import queue
 48 q = queue.LifoQueue()
 49 q.put(1)
 50 q.put(2)
 51 q.put(3)
 52 
 53 print(q.get())
 54 print(q.get())
 55 print(q.get())
 56 ‘‘‘
 57 ‘‘‘
 58 #VIP
 59 import queue
 60 
 61 q = queue.PriorityQueue()
 62 q.put((-1,‘c‘))
 63 q.put((3,‘h‘))
 64 q.put((10,‘alex‘))
 65 q.put((6,‘w‘))
 66 
 67 print(q.get())
 68 print(q.get())
 69 print(q.get())
 70 print(q.get())
 71 ‘‘‘
 72 #生产者消费者模型
 73 
 74 import threading,time
 75 import queue
 76 
 77 q = queue.Queue(maxsize=10)
 78 
 79 def Producer(name):
 80     count =1
 81     while True:
 82         q.put(骨头%s% count)
 83         print (生成了骨头,count)
 84         count +=1
 85         time.sleep(0.1)
 86 def Consumer(name):
 87     #while q.qsize() > 0 :
 88     while True:
 89         print ([%s] 取到 [%s] 并且吃了它...% (name,q.get()))
 90         time.sleep(1)
 91 
 92 p = threading.Thread(target=Producer,args=(Alex,))
 93 c = threading.Thread(target=Consumer,args=(陈荣华,))
 94 c1 = threading.Thread(target=Consumer,args=(王森,))
 95 p.start()
 96 c.start()
 97 c1.start()
 98 
 99 
100 
101 
102 #下面来学习一个最基本的生产者消费者模型的例子
103 ‘‘‘
104 import threading
105 import queue
106  
107 def producer():
108     for i in range(10):
109         q.put("骨头 %s" % i )
110  
111     print("开始等待所有的骨头被取走...")
112     q.join()
113     print("所有的骨头被取完了...")
114 
115 def consumer(n):
116     while q.qsize() >0:
117         print("%s 取到" %n  , q.get())
118         q.task_done() #告知这个任务执行完了
119  
120 q = queue.Queue()
121 p = threading.Thread(target=producer,)
122 p.start()
123 c1 = consumer("李闯")
124 ‘‘‘
125 
126 
127 ‘‘‘
128 import time,random
129 import queue,threading
130 q = queue.Queue()
131 def Producer(name):
132   count = 0
133   while count <20:
134     time.sleep(random.randrange(3))
135     q.put(count)
136     print(‘Producer %s has produced %s baozi..‘ %(name, count))
137     count +=1
138 def Consumer(name):
139   count = 0
140   while count <20:
141     time.sleep(random.randrange(4))
142     if not q.empty():
143         data = q.get()
144         print(data)
145         print(‘1mConsumer %s has eat %s baozi...‘ %(name, data))
146     else:
147         print("-----no baozi anymore----")
148     count +=1
149 p1 = threading.Thread(target=Producer, args=(‘A‘,))
150 c1 = threading.Thread(target=Consumer, args=(‘B‘,))
151 p1.start()
152 c1.start()
153 ‘‘‘
#queue队列 #生产者消费者模型

 

以上是关于#queue队列 #生产者消费者模型的主要内容,如果未能解决你的问题,请参考以下文章

使用队列queue实现一个简单的生产者消费者模型

[Java并发编程实战] 阻塞队列 BlockingQueue(含代码,生产者-消费者模型)

13 join 线程锁之LockRlock信号量 将线程变为守护进程 Event事件  queue队列 生产者消费者模型 Queue队列 开发一个线程池

Queue 实现生产者消费者模型

python queue和生产者和消费者模型

Python学习笔记——进阶篇第九周———线程进程协程篇(队列Queue和生产者消费者模型)