三十、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)

     

 

posted @ 2016-07-26 19:41  咖啡茶  阅读(98)  评论(0)    收藏  举报