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()??