zoukankan      html  css  js  c++  java
  • 7.3.9

    一 线程queue

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

    有三种不同的用法

    1. class queue.Queue(maxsize=0) #队列:先进先出

    import queue  # 队列
    
    q = queue.Queue(3)
    q.put("first")
    q.put(2)
    q.put("three")
    print(q.get())
    print(q.get())
    print(q.get())
    先进先出
    first
    2
    three
    运行结果

    2. class queue.LifoQueue(maxsize=0) #堆栈:last in fisrt out

    import queue
    q=queue.LifoQueue()
    q.put(1)
    q.put(2)
    q.put(3)
    
    print(q.get())
    print(q.get())
    print(q.get())
    先进后出
    3
    2
    1
    运行结果

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

    结果(数字越小优先级越高,优先级高的优先出队):#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
    import queue
    q = queue.PriorityQueue(3)  # 优先级,越小优先级越大
    q.put([10,'one']) # first 优先级  second data
    q.put([30,'two']) # first 优先级  second data
    q.put([20,'three']) # first 优先级  second data
    print(q.get())
    print(q.get())
    print(q.get())
    优先级输出
    [10, 'one']
    [20, 'three']
    [30, 'two']
    运行结果

    Put方式是元组或者列表

    import queue
    q = queue.PriorityQueue(3)  # 优先级,越小优先级越大
    q.put((10,'one')) # first 优先级  second data
    q.put((30,'two')) # first 优先级  second data
    q.put((20,'three')) # first 优先级  second data
    print(q.get())
    print(q.get())
    print(q.get())
    元组方式
    (10, 'one')
    (20, 'three')
    (30, 'two')
    输出结果

    其他参数,阻塞,和超时时间

    import queue
    q=queue.Queue(3)
    q.put(1)
    q.put(2)
    q.put(3) 
    q.put(4,timeout=3)  # 阻塞,3秒后异常退出报,队列满了
    阻塞和非阻塞

    import queue
    q=queue.Queue(3)
    q.put(1)
    q.put(2)
    q.put(3)
    q.put(4,block=True,timeout=3)
    非阻塞

    q.get也一样。

    查看队列是否满了后者空了

    import queue
    q=queue.Queue(3)
    q.put(1)
    q.put(2)
    q.put(3)
    print(q.full())  # 查看队列是否满了
    print(q.empty()) # 查看队列是否空了
    print(q.get())
    print(q.get())
    print(q.get())
    print(q.full())
    print(q.empty())
    查看队列是否满了或者空
    True
    False
    1
    2
    3
    False
    True
    运行结果
  • 相关阅读:
    百度搜索时加上 (要屏蔽的内容),你会回来感谢我的。
    layui中不全的组件
    PHP使用gd库做的图像处理
    范用户体验相关BLOG
    视频聊天室软件的技术标准
    QTP11使用DOM XPath以及CSS识别元素对象
    跟我一起学Oracle 11g【11】Oracle 中的事务
    一点关于 mybatis 的记录
    git撤销本地commit,复原本地代码与服务器同步
    中国人民银行令〔2021〕第4号(征信业务管理办法)
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8524649.html
Copyright © 2011-2022 走看看