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

python---常见的数据队列

时间:2016-07-24 16:18:22      阅读:1177      评论:0      收藏:0      [点我收藏+]

标签:

一、FIFO队列(先进先出)

技术分享
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = zhoufeng

#FIFO队列
import queue
q=queue.Queue(3)  #定义一个3位置的队列

#使用put方法往队列中添加元素,需要考虑是否能放下的问题
#如果放不下了,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=5)
#可以使用block=False设置不阻塞立即报错
q.put(11)
q.put(22)
q.put(33)
print(q.empty())  #判断队列是否为空,如果为空返回False,不为空返回True
print(q.qsize())  #输出队列中元素个数
q.put(44,block=True,timeout=5)



#使用get方法从队列中取数据,需要考虑是否有数据可取的问题
#如果无数据可取,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=2)
#可以使用block=False设置不阻塞立即报错
print(q.get())
print(q.get())
print(q.get())
print(q.get(block=True,timeout=2))


#另外还有join与task_done方法,这两个方法是成对使用的
#join方法用于阻塞进程不继续往下执行,当队列中任务执行完后,不再阻塞
#解释器怎样知道队列中任务执行完了呢?通过task_done方法显式告诉解释器某个任务已经执行完毕
que=queue.Queue(3)  #定义一个3位置的队列对象
que.put(11)
que.put(22)
que.put(33)

que.get()
que.task_done()  #告诉解释器上一个任务已经执行完毕
que.get()
que.task_done()  #告诉解释器上一个任务已经执行完毕

que.join()
View Code

 

二、栈(后进先出)

使用queue.LifoQueue()生成栈

 

三、优先级队列

使用queue.PriorityQueue()生成优先级队列

 

四、双向队列

使用queue.deque()生成双向队列

 

python---常见的数据队列

标签:

原文地址:http://www.cnblogs.com/zhoufeng1989/p/5700800.html

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