threading PriorityQueue 优先级
各个进程读取(in)优先队列是有序的 out 是无序的 (一定要设定保护进程,否则程序无法停止。)
import Queue import threading import sys import time import random class Worker(threading.Thread): '''''' def __init__(self,queue): threading.Thread.__init__(self) self.__queue = queue self.setDaemon(True) def run(self): while True: try : item = self.__queue.get() print item , 'in' time.sleep(random.randint(100,1000)/1000.0) print item , 'out' self.__queue.task_done() except Queue.Empty: break queue = Queue.PriorityQueue() queue.put((20,'second')) queue.put((10,'first')) queue.put((30,'third')) for i in xrange(3): Worker(queue).start() queue.put((50,'fifth')) queue.put((80,'eighth')) queue.put((70,'seventh')) queue.put((60,'sixth')) queue.join() sys.exit(0) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (10, 'first') in (20, 'second') in (30, 'third') in (30, 'third') out (50, 'fifth') in (20, 'second') out (60, 'sixth') in (50, 'fifth') out (70, 'seventh') in (10, 'first') out (80, 'eighth') in (70, 'seventh') out (80, 'eighth') out (60, 'sixth') out