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
    运行结果
  • 相关阅读:
    Django模板语言进阶
    ORM基础之ORM介绍和基础操作
    ORM关于表那些事
    ORM之基础操作进阶
    ORM基础之字段及其参数介绍
    AJAX初识(原生JS版AJAX和Jquery版AJAX)
    AJAX异步、sweetalert、Cookie和Session初识
    在一个千万级的数据库查寻中,如何提高查询效率?
    A fatal error has been detected by the Java Runtime Environment(jdk 1.6的一个BUG)
    外网映射工具地址
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8524649.html
Copyright © 2011-2022 走看看