三十、Python--queue模块
Queue 是队列。是线程安全的。执行先进先出
生产者和消费者
1 import queue 2 import threading 3 4 message = queue.Queue(10) #指定队列长度为10 5 6 def producer(i): 7 print('put',i) 8 message.put(i) 9 10 def consumer(i): 11 print('get',i) 12 message.get() 13 14 for i in range(12): 15 t = threading.Thread(target = producer,args = (i,)) #建立生产者线程 16 t.start() 17 18 for i in range(10): 19 t = threading.Thread(target=consumer,args = (i,)) #建立消费者线程 20 t.start()
常见queue方法
1:queue.Queue(maxsize =0) #构造先进先出队列,长度为maxsize
2:q.join() #阻塞一直到队列为空。在执行剩余操作
3:q.qsize() #返回队列大小
4:q.empty() #判断当前队列是否为空,空返回True,否则返回False
5:q.put(item,block=True,timeout=None) #将item放入Queue尾部,item必须存在,
block默认为True,表示当队列满的时候,等待有位置在放入。为Flase,当队列满的时候,继续put会报错。
timeout设置,等待放入超时则报错。
6:q.get(block=True,timeout=None) #移除并返回队列头部的一个值,
block默认为True,表示获取数值的时候,如果队列为空,则阻塞。为False,则不阻塞,如果为空,异常。
timeout,表示会阻塞设置的时间,如果超时获取不到数据报错。
7:q.put_nowait(item) #等效于put(item,block=False)
8: q.get_nowart() #等效于 get(item, block = False)

浙公网安备 33010602011771号