python queue get 方法_Python语言中的Queue(队列)

本文主要向大家介绍了Python语言中的Queue,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

什么是队列?

队列就像是水管子,先进先出,与之相对应的是栈,后进先出。

队列是线程安全的,队列自身有机制可以实现:在同一时刻只有一个线程在对队列进行操作。

存数据,取数据

1 import Queue2 3 q = Queue.Queue() #调用队列生成对象4 q.put(1)  #存放第一个值到队列5 q.put(2)  #存放第二个值到队列6 7 8 print 'get frist one:',q.get() #获取队列的第一个值9 print 'get second on:',q.get() #获取队列的第二个值

如果队列中的数据被取完了怎么办呢?

会阻塞

q = Queue.Queue() #调用队列生成对象

q.put(1)  #存放第一个值到队列

q.put(2)  #存放第二个值到队列

a = q.get() #获取队列的第一个值print 'get frist one:%s' % a

b = q.get() #获取队列的第二个值print 'get second one:%s' % b

c = q.get()#获取队列的第三个值print 'get third one:%s' % c

#结果:'''

get frist one:1

get second one:2

#这里是阻塞状态,一直在等待着值进来~'''

取不到值的时候如何能让它不阻塞?

get_nowait()方法取

复制代码

q = Queue.Queue() #调用队列生成对象

q.put(1)  #存放第一个值到队列

q.put(2)  #存放第二个值到队列

a = q.get() #获取队列的第一个值print 'get frist one:%s' % a

b = q.get() #获取队列的第二个值print 'get second one:%s' % b

c = q.get_nowait()#获取队列的第三个值 ,使用:get_nowait()print 'get third one:%s' % c

不阻塞的时候,取不到又会报错,怎么办?

异常处理

q = Queue.Queue() #调用队列生成对象try:

q.get_nowait()except Queue.Empty as f:

print 'The Queue is empty!'

队列的长度是可以规定的哦

那么问题来了,队列被存满了怎么办?----->会阻塞...

如何能不阻塞?---->put_nowait()----->无法存放会报错------>报错怎么办?------>异常处理。

q = Queue.Queue(2) #调用队列生成对象

q.put(1)  #存放第一个值到队列print 'put value 1 done'

q.put(2)  #存放第二个值到队列print 'put vlaue 2 done'

q.put(3) #存放第三个值到队列print 'put value 3 done'

#结果:'''

put value 1 done

put vlaue 2 done

#这里会阻塞,会一直等待~'''

以上就介绍了Python的相关知识,希望对Python有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言Python频道!