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

时间:2022-06-29 14:54:07

 

 

 

 

#queue队列  #生产者消费者模型#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队列 #生产者消费者模型