码迷,mamicode.com
首页 > 其他好文 > 详细

queue模块的使用

时间:2019-09-23 22:24:35      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:port   集合   数据类型   默认参数   join   用法   import   线程   code   

queue模块

from queue import Queue,LifoQueue,PriorityQueue


# 队列——先进先出

que = Queue(5)

# 堆栈——先进后出

que = LifoQueue(5)

# 优先级队列——优先级低的先出

# que = PriorityQueue(5)


que.put('任意数据类型')
que.put(['任意数据类型(列表)'])
que.put({'任意数据类型(字典)':'aaaa'})
que.put({'这是集合'})
que.put(("元组也行",))

# 优先级队列专用(因为put里是元组,且第一个元素是可以互相比较的数据类型,这里默认用整型)
# que.put((2,'任意数据类型'))
# que.put((10,['任意数据类型(列表)']))
# que.put((5,{'任意数据类型(字典)':'aaaa'}))
# que.put((1,{'这是集合'}))
# que.put((100,("元组也行",)))

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

que.join()

Queue()队列

队列,先进先出

主要用法

  • put()
  • get()
  • put/get的默认参数
    • block
      • 默认为true
        • 当队列满了,再put就会进入等待状态
        • 当队列空了,再get就会进入等待状态
      • 当为False时
        • 当队列满了,再put就会抛错
        • 当队列空了,再get就会抛错
    • timeout
      • 只有当block为True时,才有意义
      • 设置等待状态所持续的时间,
        超出时间一样会报错

join()用法

  • 一个acquire()就要task_done()一次
  • 否则join()就阻塞住当前线程

LifoQueue()栈

栈,先进后出

主要用法

  • put()
  • get()

PriorityQueue()优先级队列

优先级队列,与优先级有关

主要用法

  • put()
  • get()

根据优先级来存放数据,基于堆,这个类基于的是大堆

即优先级低的先出来

都可以使用join()方法

重点:这里的每一种容器的put方法get时都要使用相同数量的task_down()方法

否则,join()方法会一直阻塞在这

传送门

XMind: ZEN - Trial Version

queue模块的使用

标签:port   集合   数据类型   默认参数   join   用法   import   线程   code   

原文地址:https://www.cnblogs.com/marklijian/p/11575213.html

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