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

 

posted @ 2021-04-14 10:58  小嘉欣  阅读(11345)  评论(0编辑  收藏  举报