threading Queue 队列共享数据
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 True:
item = self.__queue.get()
if item is None:
break
time.sleep(random.randint(10,100)/1000.0)
print 'task',item,'finished'
queue = Queue.Queue(0)
for i in xrange(WORKERS):
Worker(queue).start()
for i in xrange(10):
queue.put(i)
for i in xrange(WORKERS):
queue.put(None)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Thread-2 --task 0 finished 2
Thread-1 --task 0 finished 1
Thread-3 --task 0 finished 3
Thread-2 --task 1 finished 4
Thread-1 --task 1 finished 5
Thread-2 --task 2 finished 7
Thread-1 --task 2 finished 8
Thread-1 --task 3 finished 10
Thread-2 --task 3 finished 9
Thread-3 --task 1 finished 6
Thread-3 --task 2 finished 11
Thread-3 --task 3 finished 12