python 数据结构 队列(queue)

时间:2023-03-10 06:04:16
python 数据结构 队列(queue)

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

欢迎关注小婷儿的博客:

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

python QQ交流群:py_data 483766429

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

****:https://blog.****.net/u010986753

一、概念

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

二、作用

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

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

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

python 数据结构 队列(queue)

 class Queue:
def queue(self):
'''入队'''
def dequeue(self):
'''出队'''
if __name__ == '__main__':
xxt = [1, 2, 3, 4]
#相当于在队尾插入元素
xxt.insert(1, 10)
xxt.insert(0, 20)#0代表队尾
print('insert:',xxt) #相当于从队首删除元素
xxt.pop()
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()后续调用告诉队列,任务的处理是完整的。

 from collections import deque
queue = deque(["Eric", "John", "Michael"])
print('queue:',queue)
queue.append("Terry")
print('queue.append:',queue)
queue.append("Graham")
print('queue.append:',queue)
queue.popleft()
print('queue.popleft:',queue)
queue.popleft()
print('queue.popleft:',queue) '''结果
queue: deque(['Eric', 'John', 'Michael'])
queue.append: deque(['Eric', 'John', 'Michael', 'Terry'])
queue.append: deque(['Eric', 'John', 'Michael', 'Terry', 'Graham'])
queue.popleft: deque(['John', 'Michael', 'Terry', 'Graham'])
queue.popleft: deque(['Michael', 'Terry', 'Graham'])
'''

来源: 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正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

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

python 数据结构 队列(queue)