与put()函数一样 , get()函数也有两个可选参数,完整签名如下Queue.get(block=True, timeout=None)。
默认情况下,当队列空时调用该函数会一直阻塞,直到队列中有任务可获取为止 。如果 timeout 是正数 , 则最多阻塞 timeout 秒,如果这段时间内还没有任务可获取,则会引发Empty异常 。
当 block 为 false 时,timeout 参数将失效 。同时如果队列中没有任务可获取则会立刻引发Empty异常 , 否则会直接获取一个任务并返回 , 不会阻塞 。
另外,还可以通过Queue.get_nowait()来获取任务,相当于Queue.get(False),不再赘述 。同样,在队列为空时,该操作会引发Empty异常 。
Queue.qsize()函数返回队列的大小 。注意这个大小不是精确的,qsize()0 不保证后续的 get() 不被阻塞,同样 qsize()maxsize 也不保证 put() 不被阻塞 。
如果队列为空,返回True,否则返回False。如果 empty() 返回True,不保证后续调用的 put() 不被阻塞 。类似的 , 如果 empty() 返回False,也不保证后续调用的 get() 不被阻塞 。
如果队列是满的返回True,否则返回False。如果 full() 返回True不保证后续调用的 get() 不被阻塞 。类似的,如果 full() 返回False也不保证后续调用的 put() 不被阻塞 。
queue.Queue()是 FIFO 队列,出队顺序跟入队顺序是一致的 。
queue.LifoQueue()是 LIFO 队列,出队顺序跟入队顺序是完全相反的 , 类似于栈 。
优先级队列中的任务顺序跟放入时的顺序是无关的,而是按照任务的大小来排序,最小值先被取出 。那任务比较大小的规则是怎么样的呢 。
注意,因为列表的比较对规则是按照下标顺序来比较的 , 所以在没有比较出大小之前,队列中所有列表对应下标位置的元素类型要一致 。
好比[2,1]和["1","b"]因为第一个位置的元素类型不一样,所以是没有办法比较大小的,所以也就放入不了优先级队列 。
然而对于[2,1]和[1,"b"]来说即使第二个元素的类型不一致也是可以放入优先级队列的,因为只需要比较第一个位置元素的大小就可以比较出结果了,就不需要比较第二个位置元素的大小了 。
但是对于[2,1]和 1[2,"b"]来说,则同样不可以放入优先级队列,因为需要比较第二个位置的元素才可以比较出结果,然而第二个位置的元素类型是不一致的,无法比较大小 。
综上,也就是说,直到在比较出结果之前,对应下标位置的元素类型都是需要一致的。
下面我们自定义一个动物类型,希望按照年龄大小来做优先级排序 。年龄越小优先级越高 。
本章节介绍了队列以及其常用操作 。因为队列默认实现了锁原语,因此在多线程编程中就不需要再考虑多线程安全问题了,对于程序员来说相当友好了 。
python_队列1.队列是先进先出python创建队列函数,列表可以读取某个指定数据
2.队列如果将储存python创建队列函数的数据都读完就结束,列表可以反复读取
例如:
二、具体介绍一下queue
在使用queue的时候要先引入queue模块,创建对象~
其中queue可以创建出三种对象分别是
1.先进先出行Queue(maxsize = python创建队列函数?)
通过上面的例子python创建队列函数我们能发现,put 方法是往队列放数据,但是队列跟列表不同取完之后数据就没有python创建队列函数了,如果取的数据大于列表存放的数据就会卡住这时候有两种解决办法,第一种调用get_nowait()方法,这时候就会报异常queue.Empty,第二种就是从get自身解决,get(block = False),默认的时候block是True 。
2.后进先出LifeQueue()是个缩写是Last in first out
推荐阅读
- 手游赛车竞速类游戏,赛车竞速类的游戏
- 新媒体如何提高能力,新媒体如何提高能力的方法
- 房产中介如何进行营销创新,适合房产中介的营销方案
- 九阳电磁炉直播卖货视频,九阳电磁炉京东商城自营
- php获取数据库配置文件 php的数据库配置在哪
- 系统u盘怎么变系统盘,如何把系统u盘变成普通u盘
- 桌面游戏广告卸载,桌面游戏广告卸载不了
- 7750cpu配什么,7750配什么主板
- 两个函数如何相加c语言 两个函数加在一起