zoukankan      html  css  js  c++  java
  • 线程队列

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

    queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.

    使用队列进行数据交换可以保证数据的安全

    class queue.Queue(maxsize=0) #先进先出

    import queue
    
    q=queue.Queue()
    q.put('first')
    q.put('second')
    q.put('third')
    
    print(q.get())
    print(q.get())
    print(q.get())
    '''
    结果(先进先出):
    first
    second
    third
    '''
    先进先出队列

    class queue.LifoQueue(maxsize=0) #last in fisrt out / first in last out

    import queue
    
    q=queue.LifoQueue() #队列,类似于栈
    q.put('first')
    q.put('second')
    q.put('third')
    # q.put_nowait()
    
    print(q.get())
    print(q.get())
    print(q.get())
    # q.get_nowait()
    '''
    结果(后进先出):
    third
    second
    first
    '''
    先进后出队列

    class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列

    import queue
    
    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())
    '''
    结果(数字越小优先级越高,优先级高的优先出队):
    (10, 'b')
    (20, 'a')
    (30, 'c')
    '''
    优先级队列

     注意: 当添加数据时, 如果超过了队列长度. 那么程序会被阻塞, 可以在后面加q.put_nowait().

    同理在取数据的时候如果队列中没有数据中也会阻塞, 可以在后面加q.get_nowait().

  • 相关阅读:
    解决打开GitHub慢的问题
    RestFramework规范简介
    在Linux中持久化运行项目
    Linux安装Mysql
    Java基础内容汇总[持续更新]
    Elasticsearch内容汇总[持续更新]
    深入源码理解SpringBean生命周期
    利用JVM钩子函数优雅关闭线程池
    聊聊消息队列高性能的秘密——零拷贝技术
    Elasticsearch性能优化汇总——写入&搜索
  • 原文地址:https://www.cnblogs.com/af1y/p/10060825.html
Copyright © 2011-2022 走看看