python之Queue模块
来源:互联网 发布:四川 网络作家协会 编辑:程序博客网 时间:2024/06/05 19:28
Queue – 队列,队列是线程间最常见的交换数据的形式,Queue模块提供了队列的操作
创建一个队列对象
import Queue# 构造一个FIFO队列。maxsize是个整数,指明了队列中能存放的数据个数的上限。# 一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。workQueue = Queue.Queue(10)
Queue模块中的常用方法:
Queue.qsize() 返回队列的大小Queue.empty() 如果队列为空,返回True,反之FalseQueue.full() 如果队列满了,返回True,反之FalseQueue.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() 实际上意味着等到队列为空,再执行别的操作
Queue模块有3种队列:
FIFO–先进先出
LiFO–先进后出
优先级别–级别越低先出
分别对应三种构造函数:
Queue.Queue(10)Queue.LifoQueue(10)Queue.PriorityQueue(10)
附上一个例子:
import Queueimport threadingimport timefrom service.TCPClient import *exitFlag = 0class myThread(threading.Thread): def __init__(self, threadID, name, q): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.q = q def run(self): print "Starting " + self.name process_data(self.name, self.q) print "Exiting " + self.namedef process_data(threadName, q): while not exitFlag: queueLock.acquire() if not workQueue.empty(): data = q.get() send_data(data) queueLock.release() print "%s processing %s" % (threadName, data) else: queueLock.release() # time.sleep(1)threadList = ["Thread-1", "Thread-2", "Thread-3"]nameList = getData()print nameListqueueLock = threading.Lock()# 构造一个FIFO队列。maxsize是个整数,指明了队列中能存放的数据个数的上限。# 一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。workQueue = Queue.Queue(10)threads = []threadID = 1print '--start--', time.ctime()# 创建新线程for tName in threadList: thread = myThread(threadID, tName, workQueue) thread.start() threads.append(thread) threadID += 1# 填充队列queueLock.acquire()for word in nameList: workQueue.put(word)queueLock.release()# 等待队列清空while not workQueue.empty(): pass# 通知线程是时候退出exitFlag = 1# 等待所有线程完成for t in threads: t.join()print "Exiting Main Thread"print '--end--', time.ctime()
0 0
- python之Queue模块
- Python模块介绍之base64模块、Queue模块
- Python之Queue模块使用心得
- [Python] python Queue模块
- python Queue模块
- python Queue模块
- python Queue模块
- python Queue模块
- python Queue模块
- python模块学习---Queue
- python Queue模块
- Python中的Queue模块
- Python Queue模块
- python queue模块
- Python Queue模块详解
- Python Queue模块详解
- Python Queue模块详解
- Python队列Queue模块
- CI框架的查询数据封装的方法
- oj_469 flappy bird
- Android Studio 视图解析
- 记录在中软卓越工作一周年,为成为优秀的企划人继续努力
- java面试讨论
- python之Queue模块
- dubbo 启动 java.net.unkownhostexception : bogon:bogon :Name or service not known
- 集算器协助java处理多样性数据源之HDFS
- 通过图像对核函数进行直观理解
- POJ 3687 Labeling Balls
- 有关STM32输入输出模式
- Android 百度地图定位 代码
- linphone
- O2S.Components.PDFRender4NET.dll 使用 pdf 转图片