天天看点

python多线程队列安全

这是一个经典的“生产者消费者”例子:

python queue模块有三种队列:

1、python queue模块的FIFO队列先进先出。

2、LIFO类似于堆。即先进后出。

3、还有一种是优先级队列级别越低越先出来。 

针对这三种队列分别有三个构造函数:

1、class Queue.Queue(maxsize) FIFO 

2、class Queue.LifoQueue(maxsize) LIFO 

3、class Queue.PriorityQueue(maxsize) 优先级队列 

介绍一下此包中的常用方法:

Queue.qsize() 返回队列的大小 

Queue.empty() 如果队列为空,返回True,反之False 

Queue.full() 如果队列满了,返回True,反之False

Queue.full 与 maxsize 大小对应 

Queue.get([block[, timeout]])获取队列,timeout等待时间 

Queue.get_nowait() 相当Queue.get(False)

非阻塞 Queue.put(item) 写入队列,timeout等待时间 

Queue.put_nowait(item) 相当Queue.put(item, False)

Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号

Queue.join() 实际上意味着等到队列为空,再执行别的操作

代码: