解耦:分工,降低耦合度,每个模块都是独立的
所有的过程都让中介介质处理,这就是在解耦
队列就是中介介质
阻塞队列是一个缓冲区,平衡生产者和消费者
random.randrange(3) 随机取1或2
print('\033[32.lm。。。。.\033[Om') 加颜色
队列是用来多线程之间通信
q.task_done() 给队列发信号
q.join() 等待信号
put,get q.task_done() 发信号
q.join() 发了信号才能接收信号,并判断队列是否为空,则执行下面的代码
import time,randomimport queue,threadingq = queue.Queue()def Producer(name): count = 0 while count <10: print("making........") time.sleep(5) q.put(count) print('Producer %s has produced %s baozi..' %(name, count)) count +=1 #q.task_done() q.join() print("ok......")def Consumer(name): count = 0 while count <10: time.sleep(random.randrange(4)) # if not q.empty(): # print("waiting.....") #q.join() data = q.get() print("eating....") time.sleep(4) q.task_done() #print(data) print('\033[32;1mConsumer %s has eat %s baozi...\033[0m' %(name, data)) # else: # print("-----no baozi anymore----") count +=1p1 = threading.Thread(target=Producer, args=('A君',))c1 = threading.Thread(target=Consumer, args=('B君',))c2 = threading.Thread(target=Consumer, args=('C君',))c3 = threading.Thread(target=Consumer, args=('D君',))p1.start()c1.start()c2.start()c3.start()