生产消费模型

import time
def comsumer():
    need = input("请问需要多少包子:")
    return need
def producer(n):
    res = []
    for i in range(1,n+1):
        time.sleep(0.2)
        res.append(‘包子%s‘ %i)
    return res
while True:
    n = int(comsumer())
    m = producer(n)
    print(m,‘\n这是您的%s个包子,请收好,欢迎下次光临‘ %n)

代码结果如下:  

请问需要多少包子:10
[‘包子1‘, ‘包子2‘, ‘包子3‘, ‘包子4‘, ‘包子5‘, ‘包子6‘, ‘包子7‘, ‘包子8‘, ‘包子9‘, ‘包子10‘]
这是您的10个包子,请收好,欢迎下次光临
请问需要多少包子:15
[‘包子1‘, ‘包子2‘, ‘包子3‘, ‘包子4‘, ‘包子5‘, ‘包子6‘, ‘包子7‘, ‘包子8‘, ‘包子9‘, ‘包子10‘, ‘包子11‘, ‘包子12‘, ‘包子13‘, ‘包子14‘, ‘包子15‘]
这是您的15个包子,请收好,欢迎下次光临
请问需要多少包子:

import time
def comsumer():
    while True:
        need = input()
        print("我需要%s个包子" %need)
        yield need
        baozi = yield
        print("谢谢您的%s个包子!" %baozi)
        producer()
def producer():
    print("请问您需要多少包子?")
    a = comsumer()
    xuqiu = a.__next__()
    a.__next__()
    time.sleep(int(xuqiu)/10)
    res = ["包子%s" %i for i in range(1,int(xuqiu)+1)]
    print(res,"\n这是您的%s个包子,请收好,欢迎下次光临" %xuqiu)
    a.send(xuqiu)
producer()

代码结果如下:

请问您需要多少包子?
10
我需要10个包子
[‘包子1‘, ‘包子2‘, ‘包子3‘, ‘包子4‘, ‘包子5‘, ‘包子6‘, ‘包子7‘, ‘包子8‘, ‘包子9‘, ‘包子10‘]
这是您的10个包子,请收好,欢迎下次光临
谢谢您的10个包子!
请问您需要多少包子?

原文地址:https://www.cnblogs.com/zhangsenzhen/p/9385244.html

时间: 2024-10-13 09:05:30

生产消费模型的相关文章

【JAVA】wait和notify用法,附生产/消费模型

关于wait和notify的用法,网上已经有很多详细解释了,我只是简单的总结下. wait用于释放锁A,并让wait所在的线程阻塞.除非被持有锁A的其它线程执行notify来唤醒,它才能重新"活"过来. notify用于唤醒因为等待锁A而阻塞的线程,让它们做好竞争锁A的准备.如果有多个线程因等待锁A而被阻塞,notify只唤醒一个,唤醒所有用notifyAll. 参考下面的线程状态图,对理解wait和notify有很大的帮助. 总结: wait和notify通常和synchronize

Java生产消费模型—ArrayBlockingQueue详解

背景需求 生产消费模型是线程协作关系中十分常见的一种.通常,一个(多个)线程负责生产,一个(多个)线程可以从生产的列表中获取并消费:生产的内容可以按需求设计,可以是一个Integer,可以是String,可以Object,也可以是任意类型的对象,只要有生产消费的需求. 例如,厨师负责生产美食,放在桌子上,服务员负责取走(消费)美食.这里,厨师就扮演着生产者的身份,美食是生产的内容,服务员就扮演着消费者的身份. 下面用这个厨师与服务员的案例来分析下生产消费模型需要实现哪些功能才能满足需求: 如何实

队列、生产消费模型.html

一.python 队列: 概述: import queue 都是在python内存中创建,python进程退出,则队列清空 可通过pycharm查看这些队列类的方法 先进先出队列: q = queun.Queue( [10] ) # 创建一个 "先进先出" 队列,最多接受10个数据,放第11个时会卡主,不加参数默认为0,即无限多个 q.qsize() # 查看当前队列中元素个数 q.maxsize # 队列最大个数 q.put(33, [ timeout=2] ) # 等待2秒,若2秒

python学习笔记-Day11 (线程、进程、queue队列、生产消费模型、携程)

线程使用 ###方式一 import threading def f1(arg): print(arg) t = threading.Thread(target=f1, args=(123,)) t.start() # start会调用run方法执行 # t是threading.Thread类的一个对象 # t.start()就会以线程的方式执行函数,可以使用pycharm ctrl选择start方法 # 找到Thread类的start方法,在start方法的注释中就已经写明,会去调用run()

生成器函数以及生产消费模型

1.生成器函数,即最终的输出用yield替代return,其他形式不变的函数,而且相比于return,输入yield函数不会立即停止 1 def test(): 2 print('你好') 3 return 10 4 def test_1(): 5 print('你好') 6 yield 10 7 a = test() 8 print(a) 9 b = test_1() 10 print(b) #<generator object test_1 at 0x00000000024F3570> 首

Python学习之路并发编程--信号量、事件、队列及生产消费模型

1. 信号量 对于多进程来说,多个进程同时修改数据,就可能出现安全隐患,所以引入了锁,这一机制,但锁只能有一把来控制一个的开关,当你需要几把锁的时候,就可能用到信号量的概念.他是用了锁的原理,内置了一个计数器,在同一时内,只能有指定数量的进程来执行某一段被控制的代码. import time,random from multiprocessing import Process,Semaphore def singing(i,sem): ''' :param i: 随机生成20个数的值 :para

Day9 进程同步锁 进程队列 进程池 生产消费模型

进程同步锁: 当运行程序的时候,有可能你的程序同时开多个进程,开进程的时候会将多个执行结果打印出来,这样的话打印的信息都是错乱的,怎么保证打印信息是有序的呢? 其实也就是相当于让进程独享资源. 1 from multiprocessing import Process,Lock #引用函数 2 import time 3 def work(name,mutex): 4 mutex.acquire() #在这里加入锁 5 print('task <%s> is runing' %name) 6

JAVA 多线程制作大球吃小球 一、实现球的自动生成及运动 生产消费模型

/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/ 前几天用多线程实现了创建小球并移动,想到大鱼吃小鱼,便突发奇想要写一个大球吃小球.首先第一步自然是先把界面弄好啦 1 public class BallUI extends JPanel { 2 3 private ArrayList<Ball> li = new ArrayList<Ball>(); 4 5 public static void main(String[] args

并发编程: 生产消费模型、死锁与Rlock、线程、守护线程、信号量、锁

一.守护进程 二.互斥锁 三.抢票 四.进程间通讯 五.进程间通讯2 一.守护进程 """ 进程间通讯的另一种方式 使用queue queue 队列 队列的特点: 先进的先出 后进后出 就像扶梯 """ from multiprocessing import Process,Queue # 基础操作 必须要掌握的 # 创建一个队列 # q = Queue() # # 存入数据 # q.put("hello") # q.put(