#!/usr/bin/env python # -*-coding:utf-8 -*- ''' 生产者消费者模型: 为什么要使用生产者和消费者模式: 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者的处理速度很快, 而消费者处理慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同理反过来也不行,因此引进这种模式。 什么是生产消费者模式: 生产者消费模式是通过一个容器来解决生产者和消费者的解耦问题。两者之间不直接通讯,而通过阻塞队列进行通讯, 队列就相当于一个缓冲区,平衡了两者的处理能力。 ''' import time, random import queue, threading q = queue.Queue() # 全局q def Producer(name): count = 0 while count < 10: print("making........") time.sleep(random.randrange(3)) q.put(count) print('Producer %s has produced %s baozi..' % (name, count)) count += 1 q.task_done() # task_done()给队列发信息,队列操作完成(.put()) # q.join() print("ok......") def Consumer(name): count = 0 while count < 9: time.sleep(random.randrange(4)) if not q.empty(): # print("waiting.....") q.join() # 与.task_done()对应 data = q.get() print("eating....") # time.sleep(4) # q.task_done() # print(data) print('