• queue模块


    1、queue模块--队列

      queue模块提供了一个先进先出的队列Queue

      queue.Queue(maxsize=0)

      创建FIFO 队列,返回Queue对象

      maxsize 小于等于0,队列长度没有限制

      Queue.get(block=True, timeout= None)

      从队列中移除元素并返回 这个元素

      block 为阻塞,timeout 为超时

      如果block为True, 是阻塞,timeout 为None 就是一直阻塞

      如果block 为True,但是timeout有值,就阻塞到一定秒数排除Empty异常

      如果block 为False, 是非阻塞,timeout此时将没有意义,要么返回一个元素,要么抛出Empty异常

      Queue.get_nowait()等价于get(False),也就是说要么成功返回一个元素,要么抛出empty异常,但是queue的这种阻塞效果,需要多线程的时候演示

      Queue.put(item, block=True, timeout=None) 把一个元素加入到队列中去

      block=True, timeout = None ,一直阻塞知道有空位放元素

      block=True, timeout = 5,阻塞5秒就抛出Full异常

      block=False, timeout 失效,立即放回,能塞进去就塞,不能则返回抛出Full异常

      Queue.put_nowait(item)等价 put(item,False),也就是能塞进去,就塞,不能则返回抛出Full异常

     1 # 不支持索引!!
     2 from queue import Queue
     3 
     4 q = Queue()
     5 print(q.empty()) # 没有数据,返回 True
     6 print(q.full()) # 不是满的 ,返回 False
     7 
     8 print(q.get())# 此时 一直处于等的状态 永久的等
     9 print(q.get(block=True, timeout=None))# block表示默认,阻塞, timeout默认一直阻塞
    10 
    11 q.get(True, 5) #等5秒,时间超时候还没有拿到就抛 empty异常
    12 q.get(False, None) # 不等,立即抛异常
    13 q.get(False, 5) #不等,所以5是没有作用的
    14 q.get_nowait()#  不等
    15 
    16 q.put() # 往里边塞数据
    17 q.put() # 放地址的引用, 所以如果放4个数字,q.get(range(4)) 这样是不对的
    18 
    19 q.put_nowait()   # 如果满了,会抛full异常

      qsize()??

    为什么要坚持,想一想当初!
  • 相关阅读:
    js概念理解
    web性能瓶颈
    http协议
    jquery插件开发
    Razor(cshtml)
    从局域网内的其他Linux主机下载文件
    Java多线程学习笔记
    java中String s="abc"及String s=new String("abc")详解
    Object中toString方法
    DAO层,Service层,Controller层、View层、entity层
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9630958.html
Copyright © 2020-2023  润新知