• 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
    运行结果
  • 相关阅读:
    请实现一个js脚本,要求做到将数字转化为千分位表示如:1234567转化为1,234,567
    Linux mlocate安装
    Linux CentOS7网络简单配置
    Linux 常见命令 文件搜索命令
    Linux 常见命令 权限管理命令
    Linux 常见命令 链接命令
    Linux 常见命令 文件处理指令
    List与Set的contains方法效率问题
    集合介绍
    Arrays.asList()
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8524649.html
Copyright © 2020-2023  润新知