生产者-消费者模型(自定义类 与函数 2种实现方式)
实现 函数 方式 模型 自定义 消费者 生产者
2023-09-11 14:18:56 时间
#!/usr/bin/env python # -*- coding:utf-8 -*- from threading import Thread import time from Queue import Queue import random class Producer(Thread): def __init__(self,name,que): super(Producer,self).__init__() self.name = name self.que = que def run(self): while True: if self.que.qsize < 3: self.que.put('一个包子') print '生产了一个包子' else: print '队列里的包子大于3' time.sleep(random.randrange(5)) class Consumer(Thread): def __init__(self,name,que): super(Consumer,self).__init__() self.name = name self.que = que def run(self): while True: try: self.que.get_nowait() print '消费了一个包子' except Exception: print '没有包子了' time.sleep(random.randrange(2)) que = Queue() for i in range(2): name = "生产者%d"%i p1 = Producer(name,que) p1.start() for i in range(3): name = "消费者%d"%i c1 = Consumer(name,que) c1.start()
#!/usr/bin/env python # -*- coding:utf-8 -*- from threading import Thread import time from Queue import Queue import random def Producer(name,que): while True: if que.qsize < 3: que.put('一个包子') print '生产了一个包子' else: print '队列里的包子大于3' time.sleep(random.randrange(2)) def Consumer(name,que): while True: try: que.get_nowait() print '消费了一个包子' except Exception: print '没有包子了' time.sleep(random.randrange(2)) que = Queue() for i in range(10): name = "生产者%d"%i p1 = Thread(target=Producer,args=(name,que)) p1.start() for i in range(3): name = "消费者%d"%i c1 = Thread(target=Consumer,args=(name,que)) c1.start()
相关文章
- c++ template函数的声明和实现需要在同一个文件中
- 基于窗函数的FIR滤波器的matlab设计与实现
- Vue - 实现锚点跳转定位到指定页面位置功能 / Anchor 页面添加锚点(仅需一个函数代码超级简洁)
- uni-app - 实现监听路由跳转,每次跳转的时候都能触发的事件(当页面路由发生变化时,触发一个封装好的请求接口或普通功能函数)全端兼容,高效简洁无 BUG 详细教程
- C语言中实现可变参数函数
- 模拟实现strcat,用函数实现strcat及strcat的原理
- 使用函数指针实现父类函数调用子类函数的两种方式
- 《C++面向对象高效编程(第2版)》——3.7 编译器如何实现const 成员函数
- 基于C语言实现(控制台)外卖派单模拟系统【100010620】
- 用函数式的 Swift 实现图片转字符画的功能
- 幂等操作的实现方案
- SwiftUI手势之控制视图旋转 获取实时度数 实现360度旋转效果 (教程含源码)
- 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。
- Java学习-080-多线程13:利用Lambda表达式实现线程类的定义
- 如何快速实现一个基于Nginx的网站监控场景 – 操作篇
- vue中ref实现对dom的操作
- 浅析JavaScript中的协程、进程如何切换线程的机制、线程如何切换协程的机制、协程的体现(生成器函数)、协程如何实现异步和非阻塞以及为什么要使用生成器+Promise组合
- SEGGER_RTT_printf()函数实现打印浮点、负数-示例
- 8种常见数据结构及其Javascript实现
- 算法提高 11-1实现strcmp函数
- 【Linux】【压测】基于python Locust库实现自动化压测实践
- SpringSecurity实现后台管理员登录(二)
- webpack入坑之旅(六)配合vue-router实现SPA
- vue-i18n实现国际化