python 数据结构 队列(queue)

如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html 

欢迎关注小婷儿的博客:

有问题请在博客下留言或加作者微信tinghai87605025  QQ 87605025

python QQ交流群:py_data 483766429 

博客园:http://www.cnblogs.com/xxtalhr/

csdnhttps://blog.csdn.net/u010986753

一、概念

队列(queue)是一种先进先出的(First In First Out)的线性表,简称FIFO。队列允许在一端进行插入操作,而在另一端进行删除操作。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作

 

二、作用

   解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。

   提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

 

队列可以并发的派多个线程,对排列的线程处理,并切每个需要处理线程只需要将请求的数据放入队列容器的内存中,线程不需要等待,当排列完毕处理完数据后,线程在准时来取数据即可。请求数据的线程只与这个队列容器存在关系,处理数据的线程down掉不会影响到请求数据的线程,队列会派给其他线程处理这分数据,它实现了解耦,提高效率。队列内会有一个有顺序的容器,列表与这个容器是有区别的,列表中数据虽然是排列的,但数据被取走后还会保留,而队列中这个容器的数据被取后将不会保留。当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

 

 

wpsC130.tmp 

 

 1 class Queue:
 2     def queue(self):
 3         '''入队'''
 4     def dequeue(self):
 5         '''出队'''
 6 if __name__ == '__main__':
 7     xxt = [1, 2, 3, 4]
 8     #相当于在队尾插入元素
 9     xxt.insert(1, 10)
10     xxt.insert(0, 20)#0代表队尾
11     print('insert:',xxt)
12 
13     #相当于从队首删除元素
14     xxt.pop()
15     print('pop:',xxt)
'''结果

insert: [20, 1, 10, 2, 3, 4]

pop: [20, 1, 10, 2, 3]

'''

 

 

三、队列参数介绍

Queue.Queue(maxsize=0)   FIFO, 如果maxsize小于1就表示队列长度无限

Queue.LifoQueue(maxsize=0)   LIFO, 如果maxsize小于1就表示队列长度无限

Queue.qsize()   返回队列的大小

Queue.empty()   如果队列为空,返回True,反之False

Queue.full()   如果队列满了,返回True,反之False

Queue.get([block[, timeout]])   读队列,取出数据 ,没有数据将会等待timeout等待时间

Queue.put(item, [block[, timeout]])   写队列,放入数据,timeout等待时间

Queue.queue.clear()   清空队列

class queue.PriorityQueue(maxsize=0) 存储数据时可设置优先级的队列,优先级设置数越小等级越高

Queue.get(timeout = 1)如果1秒后没取到数据就退出

Queue.get_nowait() 取数据,如果没数据抛queue.Empty异常

Queue.task_done()后续调用告诉队列,任务的处理是完整的。

 

 

 1 from collections import deque
 2 queue = deque(["Eric", "John", "Michael"])
 3 print('queue:',queue)
 4 queue.append("Terry")
 5 print('queue.append:',queue)
 6 queue.append("Graham")
 7 print('queue.append:',queue)
 8 queue.popleft()
 9 print('queue.popleft:',queue)
10 queue.popleft()
11 print('queue.popleft:',queue)
12 
13 '''结果
14 queue: deque(['Eric', 'John', 'Michael'])
15 queue.append: deque(['Eric', 'John', 'Michael', 'Terry'])
16 queue.append: deque(['Eric', 'John', 'Michael', 'Terry', 'Graham'])
17 queue.popleft: deque(['John', 'Michael', 'Terry', 'Graham'])
18 queue.popleft: deque(['Michael', 'Terry', 'Graham'])
19 '''

 

来源: https://www.cnblogs.com/xiangsikai/p/8185031.html

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

 

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

重要的事多做几遍。。。。。。

wpsFCFA.tmp

posted @ 2019-01-20 00:12  小婷儿  阅读(15381)  评论(0编辑  收藏  举报
levels of contents