首页 > 其他分享 >生产者与消费者模式

生产者与消费者模式

时间:2024-05-12 20:09:20浏览次数:21  
标签:__ 消费者 生产者 模式 queue veg func data name

import threading
from queue import Queue
from random import choice

dealList=["红烧猪蹄", "卤鸡爪", "酸菜鱼", "糖醋里脊", "九转大肠", "阳春面", "烤鸭", "烧鸡", "剁椒鱼头", "酸汤肥牛", "炖羊肉"]

queue=Queue(maxsize=5)

#厨子生产
def func_one(name):
    for num in range(4):
        data_veg=choice(dealList)
        queue.put(data_veg,block=True)
        print(f"厨师{name}给大家做了一道:{data_veg}")

#客人消费
def func_two(name:str):
    for num in range(3):
        veg_data=queue.get()
        print(f"客人{name}吃掉了:{veg_data}")
        queue.task_done()

if __name__=="__main__":
    # 创建生产者线程,总共三个厨子,相当于给每个厨子创建了一个线程
    for name in["张三","李四","王五"]:
        thread_one=threading.Thread(target=func_one,args=(name,))
        thread_one.start()
    # 创建消费者四个线程
    for name in ["客人甲", "客人乙", "坤哥", "凡哥"]:
        thread_two=threading.Thread(target=func_two,args=(name,))
        thread_two.start()
    queue.join()

标签:__,消费者,生产者,模式,queue,veg,func,data,name
From: https://www.cnblogs.com/tudoot/p/18188111

相关文章

  • 详解Redis持久化(持久化高危漏洞利用与多种对抗方案、RDB、AOF、同步手动持久化、异步
    谨防持久化+未授权访问漏洞入侵服务器CVE编号找不到,CNVD有一个:CNVD-2015-07557(国家信息安全漏洞共享平台漏洞编号)。这是我之前写过的文章,漏洞成因、影响范围、POC与对抗方案有详解:谨防利用Redis未授权访问漏洞入侵服务器RDB(RedisDatabase、全量保存,默认方式)极简概括:通过符......
  • 应用模式启动
    与单作业模式类似,直接执行flinkrun-application命令$bin/flinkrun-application-tyarn-application-ccom.huft.flk117.demo.StreamSocketCntjob_jar/original-fk117-1.0-SNAPSHOT.jar查看web及yarnid2.在命令行中查看或取消作业。$bin/flinklist-tyarn-applic......
  • 3-LVS工作模式
    3.LVS工作模式NAT  TUN  DRhttps://blog.csdn.net/weixin_40470303/article/details/80541639NAT1.LVS服务器配两块网卡,一块连公网与用户通信,一块连内网与集群通信2.负载路由器充当网关3.支持端口映射,后端真实服务器的地址可能不是80,而是80804.集群节点处于一个网络......
  • 会话模式启动
    YARN的会话模式与独立集群略有不同,需要首先申请一个YARN会话(YARNSession)来启动Flink集群。1.后台启动yarn会话模式flink集群bin/yarn-session.sh-d-nmtest2.查看返回地址和yarnidyarn会自动分配集群随机一台主机和端口号JobManagerWebInterface:http://xxx1:38005fl......
  • 工厂模式
    简单工厂模式把创建封装进一个类里,当实现变化时,我们只需要修改这一个地方。类图如下工厂方法处理对象的创建,并将对象的创建封装在子类中,使得客户代码从子类对象的创建代码解耦。代码示例如下#include<iostream>usingnamespacestd;classProduct{public:Produc......
  • 结构型-装饰模式(Decorator)
    1.简介装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.定义装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。装饰对象包含一个真......
  • 单例模式的两种实现方式(初始化时创建以及运行时创建)
    单例模式删除析构函数通常意味着单例对象应该一直存活直到程序结束。在单例模式中,这通常是可取的,因为单例对象的生命周期通常与应用程序的生命周期相同。但是这样的话需要有一个函数来回收资源。以下例子:使用双重检查锁实现(线程安全)实现模板来创建单例#include<iostream>......
  • wps加载项在vue2项目中的应用(publish模式)
    wps加载项在vue2项目中的应用应用代码:wps.js/***WPSOA助手-WPS启动方法入口*/varpluginsMode=location.search.split("=")[1];//截取url中的参数值varpluginType=WpsInvoke.ClientType.wps;//加载项类型wps,et,wppvarpluginName="WpsOAAssist";//加载项名......
  • 22.单元模式
    【一】单例模式让一个类只创建一个对象,即所有对象都是一样的1)元类classMyType(type):def__init__(cls,name,bases,name_space):#给自己的类加一个属性:instance初始值Nonecls.instance=Nonesuper().__init__(name,bases,name_space......
  • Java学设计模式之迭代器模式
    一、迭代器模式概念1.1什么是迭代器模式迭代器模式是一种行为型设计模式,它提供了一种方法来顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。简单来说,迭代器模式可以让你遍历一个集合对象,而无需了解其内部结构。结构迭代器(Iterator):定义了访问和遍历元素的接......