使用队列让线程同步

来源:互联网 发布:linux进程查看命令 top 编辑:程序博客网 时间:2024/05/19 16:35
__author__ = 'LL_YING''''Python中的Queue对象提供对线程同步的支持。使用Queue对象可以实现多生产者和多消费者形成先进先出的队列。每个生产者将数据一次存入队列,而每个消费者依次从队列中取出数据。'''import threadingimport 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
0 0
原创粉丝点击