队列

队列queue

q.put方法用以插入数据到队列中,put方法还有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,该方法会阻塞timeout指定的时间,直到该队列有剩余的空间。如果超时,会抛出Queue.Full异常。如果blocked为False,但该Queue已满,会立即抛出Queue.Full异常。

q.get方法可以从队列读取并且删除一个元素。同样,get方法有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,那么在等待时间内没有取到任何元素,会抛出Queue.Empty异常。如果blocked为False,有两种情况存在,如果Queue有一个值可用,则立即返回该值,否则,如果队列为空,则立即抛出Queue.Empty异常.


q.get_nowait():同q.get(False)
q.put_nowait():同q.put(False)

q.empty():调用此方法时q为空则返回True,该结果不可靠,比如在返回True的过程中,如果队列中又加入了项目。
q.full():调用此方法时q已满则返回True,该结果不可靠,比如在返回True的过程中,如果队列中的项目被取走。
q.qsize():返回队列中目前项目的正确数量,结果也不可靠,理由同q.empty()和q.full()一样
import queue
q=queue.Queue(3)#(先进先出)可以规定队列的大小

q.put(10)  #往队列中放值
q.put('hello')
q.put('world')

print(q.qsize())#队列的大小
print(q.full())#判断队列是否为满
print(q.empty())#判断队列是否为空

while 1:
    a=q.get()#取得队列的值
    print(a)

'''
3
True
False
10
hello
world
'''
#程序其实并没有结束,一直在等待其他线程操作

让程序在队列为空时报错

import queue
q=queue.Queue(3)#(先进先出)可以规定队列的大小

q.put(10)  #往队列中放值
q.put('hello')
q.put('world')
q.put('byebye',False)#put也可以一直放值,给put添加参数False在超出队列大小时报错等价于put_nowait()

print(q.qsize())#队列的大小
print(q.full())#判断队列是否为满
print(q.empty())#判断队列是否为空

while 1:
    a=q.get(False)#get里有个默认参数block=True,改为False后当队列为空时会报错,可以用get_nowait()等价于get(False)
    print(a)

后进先出

import queue
q=queue.LifoQueue(3)#(后进先出)可以规定队列的大小

q.put(10)  #往队列中放值
q.put('hello')
q.put('world')


print(q.qsize())#队列的大小
print(q.full())#判断队列是否为满
print(q.empty())#判断队列是否为空

while 1:
    a=q.get()
    print(a)

'''
3
True
False
world
hello
10
'''

按优先级

import queue
q=queue.PriorityQueue(3)#(后进先出)可以规定队列的大小

q.put([2,10])  #往队列中放值
q.put([3,'hello'])
q.put([1,'world'])


print(q.qsize())#队列的大小
print(q.full())#判断队列是否为满
print(q.empty())#判断队列是否为空

while 1:
    a=q.get()
    print(a)
'''
3
True
False
[1, 'world']
[2, 10]
[3, 'hello']
'''


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值