博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产者消费者模型
阅读量:4323 次
发布时间:2019-06-06

本文共 1279 字,大约阅读时间需要 4 分钟。

解耦:分工,降低耦合度,每个模块都是独立的

所有的过程都让中介介质处理,这就是在解耦

队列就是中介介质

阻塞队列是一个缓冲区,平衡生产者和消费者

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()
View Code

转载于:https://www.cnblogs.com/jintian/p/11001131.html

你可能感兴趣的文章
深入浅出 Java Concurrency (16): 并发容器 part 1 ConcurrentMap (1)[转]
查看>>
深入浅出 Java Concurrency (23): 并发容器 part 8 可阻塞的BlockingQueue (3)[转]
查看>>
将博客搬至CSDN
查看>>
HDOJ 2081
查看>>
第一节:认识电脑
查看>>
如何摆脱穷打工的命?
查看>>
iOS应用国际化教程
查看>>
MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)
查看>>
gulp教程
查看>>
MySQL常用日期的选择
查看>>
Ubuntu下查看命令的源码
查看>>
锁及锁粒度的详细比喻
查看>>
JS获取终端屏幕、浏览窗口的相关信息
查看>>
长这么漂亮为啥还学编程?什么心态?
查看>>
JQ JS 切换背景图
查看>>
C#WebBrowser控件使用教程与技巧收集
查看>>
Git 命令
查看>>
/x00
查看>>
数据加载中……显示框
查看>>
判断Http请求由手机端发起,还是有电脑端发起
查看>>