__author__ = 'LL_YING' ''' Python中的Queue对象提供对线程同步的支持。使用Queue对象可以实现多生产者和多消费者形成先进先出的队列。 每个生产者将数据一次存入队列,而每个消费者依次从队列中取出数据。 ''' import threading import queue # Python2中是Queue模块 queue = queue.Queue() class Producer(threading.Thread): def __init__(self, threadingname): threading.Thread.__init__(self, name=threadingname) def run(self): global queue queue.put(self.getName()) print(self.getName(), 'get', self.getName(), 'from queue') class Consumer(threading.Thread): def __init__(self, threadingname): threading.Thread.__init__(self, name=threadingname) def run(self): global queue print(self.getName(), 'get', queue.get(), 'from queue') plist = [] clist = [] for i in range(10): p = Producer('Producer' + str(i)) plist.append(p) for i in range(10): c = Consumer('Consumer' + str(i)) clist.append(c) for i in plist: i.start() i.join() for i in clist: i.start() i.join() # 输出为 # Producer0 get Producer0 from queue # Producer1 get Producer1 from queue # Producer2 get Producer2 from queue # Producer3 get Producer3 from queue # Producer4 get Producer4 from queue # Producer5 get Producer5 from queue # Producer6 get Producer6 from queue # Producer7 get Producer7 from queue # Producer8 get Producer8 from queue # Producer9 get Producer9 from queue # Consumer0 get Producer0 from queue # Consumer1 get Producer1 from queue # Consumer2 get Producer2 from queue # Consumer3 get Producer3 from queue # Consumer4 get Producer4 from queue # Consumer5 get Producer5 from queue # Consumer6 get Producer6 from queue # Consumer7 get Producer7 from queue # Consumer8 get Producer8 from queue # Consumer9 get Producer9 from queue
使用队列让线程同步
最新推荐文章于 2024-07-12 16:16:27 发布