import threading as mp from Queue import Queue from time import sleep from random import randint workers = [] queues = [] master_queue = Queue() def f(i, master, queue): while True: inp = master_queue.get(True) print("got input %s"%inp) sleep(randint(1,10)) queue.put(">>>> %d %s\n"%(i, inp)) for i in range(10): queue = Queue(1) workers.append(mp.Thread(target=f, args=(i,master_queue,queue))) queues.append(queue) workers[i].start() for i in range(10000): master_queue.put("msg-"+str(randint(1,1000))) while True: for i in range(10): if not queues[i].empty(): data = queues[i].get() print data