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

Python3-queue模块-同步队列

时间:2017-04-18 23:48:01      阅读:441      评论:0      收藏:0      [点我收藏+]

标签:hid   sed   translate   blog   strong   lifo   print   python3   style   

Python3中的queue模块实现多生产者,多消费者队列,特别适用于多个线程间的信息的安全交换,主要有三个类

  queue.Queue(maxsize=0)

    构造一个FIFO(先进先出)的队列

  queue.LifoQueue(maxsize=0)

    构造一个LIFO(后进先出)的队列

  queue.PriorityQueue(maxsize=0)

    构造一个具有优先级的队列,存储的是一个元组(n, value),n为数字代表优先级,数字越小,级别越高

这个模块定义了两个异常

  queue.Empty

    如果队列中为空,继续调用非阻塞的get_nowait()会抛出异常

  queue.Full

    如果队列已满,继续调用非阻塞的put_nowait()会抛出异常

技术分享
import queue
# 以下三个队列都可以设置最大长度maxsize,默认是无限大
print("-------------queue.Queue----------------")
# 线程消息队列,FIFO(先进先出)
q = queue.Queue()
q.put("one")
q.put("two")
q.put("three")
print(q.get())
print(q.get())
print(q.get())
# print(q.get(timeout=3))     # 队列中没有数据,会阻塞

print("-------------queue.LifoQueue----------------")
# 线程消息队列,LIFO(后进先出)
lq = queue.LifoQueue()
lq.put("one")
lq.put("two")
lq.put("three")
print(lq.get())
print(lq.get())
print(lq.get())

print("-------------queue.PriorityQueue----------------")
# 线程消息队列,PriorityQueue(优先级的队列:数字越小优先级越高)
pq = queue.PriorityQueue()
pq.put((1, "Jet"))
pq.put((3, "Jack"))
pq.put((2, "Judy"))
print(pq.get())
print(pq.get())
print(pq.get())
View Code

参考资料

  http://python.usyiyi.cn/translate/python_352/library/queue.html

  

Python3-queue模块-同步队列

标签:hid   sed   translate   blog   strong   lifo   print   python3   style   

原文地址:http://www.cnblogs.com/qq1207501666/p/6731072.html

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