1.Queue
类实现了一个基本的先进先出(FIFO)
容器,使用put()
将元素添加到序列尾端,get()
从队列头部移除元素
2.与标准FIFO实现Queue
不同的是,LifoQueue
使用后进先出序(会关联一个栈数据结构)。最后put()
到队列的元素最先被get()
3.PriorityQueue
依据队列中内容的排序顺序(sort order)来决定那个元素将被检索。
from Queue import Queue,LifoQueue,PriorityQueue
#!/usr/bin/env python # -*- coding: utf-8 -*- import Queue import threading import time Thread_id = 1 Thread_num = 3 class myThread(threading.Thread): def __init__(self, q): global Thread_id threading.Thread.__init__(self) self.q = q self.Thread_id = Thread_id Thread_id = Thread_id + 1 def run(self): while True: try: task = self.q.get(block = True, timeout = 1) #不设置阻塞的话会一直去尝试获取资源 except Queue.Empty: print 'Thread' , self.Thread_id , 'end' break #取到数据,开始处理(依据需求加处理代码) print "Starting " , self.Thread_id print task self.q.task_done() print "Ending " , self.Thread_id q = Queue.Queue(10) #向资源池里面放10个数用作测试 for i in range(10): q.put(i) #开Thread_num个线程 for i in range(0, Thread_num): worker = myThread(q) worker.start() q.join() #等待所有的队列资源都用完 print "Exiting Main Thread"