zoukankan      html  css  js  c++  java
  • Python程序中的线程操作-队列

    一、队列

    queue队列:使用import queue,用法与进程Queue一样

    实际上这里就是Python解释器中的一种数据结构中的类型——队列

    这里直接使用队列也可以。
    如果还要类似计数器的功能可以加上task_done和join

    1. FIFO 先进先出
    2. LIFO 后进先出
    3. 优先级队列

    二、先进先出(FIFO)

    class queue.Queue(maxsize=0)

    ### 普通队列
    q = queue.Queue()
    
    ### 没有计数器进行阻塞  FIFO
    q.put("first")
    q.put("second")
    q.put("third")
    
    print(q.get())
    print(q.get())
    print(q.get())
    
    ### 普通队列
    q = queue.Queue()
    
    ### 加了计数器进行阻塞的队列  FIFO
    q.put(1)    # +1
    q.put(2)    # +1
    q.put(3)    # +1
    
    print(q.get())
    q.task_done()   # -1
    print(q.get())
    q.task_done()   # -1
    print(q.get())
    q.task_done()   # -1
    q.join()    # 判断计数器是否为0,不为零则会阻塞
    

    三、后进先出

    class queue.LifoQueue(maxsize=0)

    ### 栈
    q = queue.LifoQueue()
    
    ### 没有计数器进行阻塞  LIFO
    q.put(1)    # +1
    q.put(2)    # +1
    q.put(3)    # +1
    
    print(q.get())
    print(q.get())
    print(q.get())
    
    ### 栈
    q = queue.LifoQueue()
    
    ### 加了计数器进行阻塞的队列  LIFO
    q.put(1)    # +1
    q.put(2)    # +1
    q.put(3)    # +1
    
    print(q.get())
    q.task_done()   # -1
    print(q.get())
    q.task_done()   # -1
    print(q.get())
    q.task_done()   # -1
    q.join()    # 判断计数器是否为0,不为零则会阻塞
    

    四、优先级队列

    class queue.PriorityQueue(maxsize=0)

    数字越小优先级越高

    ### 设置优先级的队列
    q = queue.PriorityQueue()
    
    # put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
    q.put((20,'a'))
    q.put((10,'b'))
    q.put((30,'c'))
    
    print(q.get())
    print(q.get())
    print(q.get())
    # 数字越小优先级越高
    
  • 相关阅读:
    (转)EDM邮件制作规范完整版
    (转)Gmail,你必须了解的12个邮件编码问题
    说说CakePHP的关联模型之一 基本关联
    HTML5 离线应用程序
    CakePHP模型中使用join的多种写法
    判断浏览器
    Javascript闭包例子
    安装wamp后,其显示目录的图标显示不出来
    underscore.js 分析 第二天
    HTML5心得
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/11552846.html
Copyright © 2011-2022 走看看