zoukankan      html  css  js  c++  java
  • (八)多线程之queue

    一、线程queue


    1,定义:

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

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

    2,class queue.Queue(maxsize=0)  队列功能:先进先出

    import queue
    
    q = queue.Queue(3)       # 先进先出--> 队列,指定队列大小,最大三个值
    
    q.put("first")     # 放值,放任何类型的值都OK
    q.put(2)
    q.put("second")
    # q.put(4)           # 放多了,阻塞住,卡那了
    # q.put(4,block=True)       # block 这个参数默认是阻塞的(队列满了就阻塞了)
    # q.put(4,block=False)        # 不阻塞,但是会抛异常,告诉你队列满了  相当于 q.put_nowait(4)
    # q.put(4,block=True,timeout=3)       # 队列满的情况下阻塞,阻塞 3秒
    
    
    print(q.get())      # 队列先进先出,取第一个进去的,这里是 "first"
    print(q.get())
    print(q.get())
    # print(q.get())      # 值取没了,队列变空,再取值,阻塞住,卡那了,与put用法一样
    
    print(q.get(block=True,timeout=3))
    # q.get(block=False) 就相当于 q.get_nowait()

    3,class queue.LifoQueue(maxsize=0)  堆栈功能:last in first out(后进先出)

    # 堆栈功能:后进先出
    import queue
    
    q = queue.LifoQueue(3)      # 后进先出---> 堆栈,与队列用法差不多
    
    q.put("first")              # 放值,放任何类型的值都OK
    q.put(2)
    q.put("second")
    
    print(q.get())
    print(q.get())
    print(q.get())
    
    """
    second
    2
    first
    """

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

    # 优先级队列
    import queue
    
    # 优先级队列,你可以向队列中放一个数据,还要给这个数据放个优先级,优先级越高越先被拿出来。
    q = queue.PriorityQueue(3)
    
    q.put((10,"first"))     # 数组形式,第一个放优先级,第二个放数据,数字越小优先级越高
    q.put((40,"second"))
    q.put((30,"third"))
    
    print(q.get())
    print(q.get())
    print(q.get())
    
    """
    (10, 'first')
    (30, 'third')
    (40, 'second')
    """
  • 相关阅读:
    centos 6.5 中设置mysql 5.1.73 主从同步配置过程
    13-jQuery事件绑定和常用鼠标事件
    12-jQuery获取相关尺寸
    11-jQuery简介和选择器
    10-js对象、数组
    09-js定时器、函数
    08-js流程控制、循环、元素操作
    07-js数据类型
    06-JavaScript简介
    05-CSS浮动、定位、页面布局
  • 原文地址:https://www.cnblogs.com/zoling7/p/13396482.html
Copyright © 2011-2022 走看看