码迷,mamicode.com
首页 > 编程语言 > 详细

python学习--queue 队列

时间:2019-11-04 22:06:52      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:str   cer   优先   没有   tar   target   lifo   运行   sleep   

 

队列queue:

作用:程序之间解耦;提高运行效率

class queue.Queue(maxsize=0) #先入先出
class queue.LifoQueue(maxsize=0) #last in fisrt out 
class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列
Queue.qsize()
Queue.empty() #return True if empty  
Queue.full() # return True if full 
Queue.put(itemblock=Truetimeout=None)
Queue.put_nowait(item)  #不等待,直接回复错误结果,避免卡死
Queue.get(block=Truetimeout=None) #等待的时间只有timeout 秒
Queue.get_nowait()

 

 

 1 import queue
 2 
 3 q = queue.Queue() #先入先出
 4 
 5 q.put("d1")
 6 q.put("d2")
 7 q.put("d3")
 8 print(q.qsize())
 9 print(q.get()) #取数据,按顺序取
10 print(q.get())
11 print(q.get())
12 
13 #q.get_nowait()  #不等待,直接回复错误结果,避免卡死
14 #q.get(timeout=1)  #等待的时间只有1s
15 #q.get()  #不能再取了,因为里面没有了,会卡死。
16 
17 q = queue.LifoQueue(3) #后入先出
18 
19 q.put("d1")
20 q.put("d2")
21 q.put("d3")
22 print(q.qsize())
23 print(q.full())  #判断是否队列存储满,返回布尔值
24 print(q.empty())  #判断是否队列是否为空,返回布尔值
25 print(q.get()) #取数据,按反序取
26 print(q.get())
27 print(q.get())
28 
29 
30 q = queue.PriorityQueue(3) #优先级输出
31 
32 q.put((10,"d1"))
33 q.put((11,"d2"))
34 q.put((1,"d3"))
35 print(q.qsize())
36 print(q.full())  #判断是否队列存储满,返回布尔值
37 print(q.empty())  #判断是否队列是否为空,返回布尔值
38 print(q.get()) #取数据,按照优先级取,从小到大
39 print(q.get())
40 print(q.get())

 

 

集群的基础:

经典的生产者消费者模型

 1 import threading,time
 2 
 3 import queue
 4 
 5 q = queue.Queue(maxsize=10)
 6 
 7 
 8 def Producer(name):
 9     count = 1
10     while True:
11         q.put("%s 牌骨头%s" % (name, count))
12         print("%s 生产了骨头 %s " % (name, count))
13         count += 1
14         time.sleep(0.1)
15 
16 
17 def Consumer(name):
18     #while q.qsize()>0:
19     while True:
20         print("[%s] 取到[%s] 并且吃了它..." % (name, q.get()))
21         time.sleep(1)
22 
23 
24 p = threading.Thread(target=Producer,args=("big dog",))
25 c = threading.Thread(target=Consumer,args=("jojo",))
26 c1 = threading.Thread(target=Consumer,args=("cj",))
27 
28 p.start()
29 c.start()
30 c1.start()

 

python学习--queue 队列

标签:str   cer   优先   没有   tar   target   lifo   运行   sleep   

原文地址:https://www.cnblogs.com/Ian-learning/p/11794877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!