# File: queue-example-1.py import threading import Queue import time, random WORKERS = 2 class Worker(threading.Thread): def __init__(self, queue): self.__queue = queue threading.Thread.__init__(self) def run(self): while 1: item = self.__queue.get() if item is None: break # reached end of queue # pretend we're doing something that takes 10-100 ms time.sleep(random.randint(10, 100) / 1000.0) print "task", item, "finished" # # try it queue = Queue.Queue(0) for i in range(WORKERS): Worker(queue).start() # start a worker for i in range(10): queue.put(i) for i in range(WORKERS): queue.put(None) # add end-of-queue markers ## task 1 finished ## task 0 finished ## task 3 finished ## task 2 finished ## task 4 finished ## task 5 finished ## task 7 finished ## task 6 finished ## task 9 finished ## task 8 finished