python多线程编程之Queue——put/get方法
python 的 Queue 模块提供了一种适用于多线程编程的 FIFO 实现。它可用于在生产者和消费者之间线程安全地传递消息或其它数据,因此多个线程可以共用同一个 Queue 实例。
Queue 类实现了一个基本的先进先出(FIFO)容器,使用 put() 将元素添加到序列尾端,get() 从队列尾部移除元素。
Queue 介绍:
- queue 是 python 中的标准库,俗称队列,可以直接 import 引用
- 在 python 中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了。队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性
Queue 模块中的常用方法:
Queue.Queue(maxsize=0) FIFO, 若是maxsize小于1就表示队列长度无限
Queue.qsize() 返回队列的大小
Queue.empty() 若是队列为空,返回True,反之False
Queue.full() 若是队列满了,返回True,反之False
Queue.get([block, [timeout]]) 读队列,timeout为等待时间
Queue.put(item, [block, [timeout]]) 写队列,timeout为等待时间
Queue.queue.clear() 清空队列
把 Queue 中的所有元素转换为 list:
# q 为队列
1 def get_queue_values(q): 2 ret = [] 3 while True: 4 if q.qsize() > 0: 5 ret.append(q.get()) 6 else: 7 break 8 return ret