• 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

  • 相关阅读:
    基于jeesit下的工作流开发步骤
    SQL Server DBA SQL
    SQL Server 全文索引的硬伤
    SQL Server全文搜索
    数据库SQL优化大总结之 百万级数据库优化方案2
    百倍性能的PL/SQL优化案例(r11笔记第13天)
    SQL优化 · 经典案例 · 索引篇
    数据库SQL优化大总结之 百万级数据库优化方案
    pytest文档23-使用多个fixture和fixture直接互相调用
    pytest文档22-fixture详细介绍-作为参数传入,error和failed区别
  • 原文地址:https://www.cnblogs.com/pythonbao/p/10293817.html
Copyright © 2020-2023  润新知