Python -- 生产者消费者

article/2025/9/12 16:33:25

代码

# -*- coding: utf-8 -*-
# @Author  : markadc
# @Time    : 2021/4/14 11:43from queue import Queue
import time
import threading# maxsize: 指定队列最大长度
q = Queue(maxsize=10)# 生产者
def product(name):count = 0while True:# 只要队列没有满,就一直往队列里生产新的值if not q.full():count += 1q.put('{}-玩具枪-{}'.format(name, count))print('{}: (生产了玩具枪:{}把) '.format(name, count))time.sleep(0.5)else:print("队列满了,正在等待 ")time.sleep(2)# 消费者
def consume(name):while True:# 只要队列不为空,就一直从队列里取出值if not q.empty():print('{}: (使用了{}) '.format(name, q.get()))time.sleep(1)else:print("队列空了,正在等待 ")time.sleep(2)def main():names = ['thomas', 'clos', 'luanke', 'mark']for name in names:# 只指定thomas为生产者,其他都为消费者if name == "thomas":t = threading.Thread(target=product, args=(name,))t.start()else:t = threading.Thread(target=consume, args=(name,))t.start()if __name__ == '__main__':main()

运行结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/2g2N8sI9.shtml

相关文章

生产者与消费者

生产者和消费者 目录 生产者和消费者1.什么是生产者和消费者2.生产者和消费者(不加唤醒机制)3.生产者和消费者(加唤醒机制)4.解决虚假唤醒5.使用lock锁6.面试题 1.什么是生产者和消费者 ​ 在日常生活中,我们去商店买东西,我们就是消费者,商…

三种方式实现生产者-消费者模型

前言 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的…

生产者消费者模型

目录 一、生产者消费者模型的概念 二、生产者消费者模型的特点 三、生产者消费者模型优点 四、基于BlockingQueue的生产者消费者模型 4.1 基本认识 4.2 模拟实现 五、POSIX信号量 5.1 信号量概念 5.2 信号量函数 5.2.1 初始化信号量 5.2.2 销毁信号量 5.2.3 等待信…

打家劫舍问题

打家劫舍问题 最近碰见这种问题实在是太多了,感觉还是有必要学习一下打家劫舍以及其变种问题这一类问题采用的都是动态规划的解法 一些练习题目 6378. 最小化旅行的价格总和 198. 打家劫舍I 213. 打家劫舍 II 337. 打家劫舍 III 2560. 打家劫舍 IV 1 、打家劫舍I 题目…

经典动态规划:打家劫舍系列问题

打家劫舍系列总共有三道,难度设计非常合理,层层递进。第一道是比较标准的动态规划问题,而第二道融入了环形数组的条件,第三道更绝,让盗贼在二叉树上打劫. House Robber | public int rob(int[] nums);题目很容易理解…

【算法】动态规划(三)——打家劫舍系列问题

目录 一、前言 二、打家劫舍 (1)198. 打家劫舍Ⅰ • 整体代码: (2)213. 打家劫舍 II • 题目分析 • 整体代码: (3)337. 打家劫舍Ⅲ • 思路分析 • 整体代码: 三、补充知…

动态规划之打家劫舍系列

前言 打家劫舍问题是一种非常经典的有限制条件的动态规划问题,按理说,不是一种特殊的类型,但是因为力扣上纯纯的出了三道题(1,2,3)来考察,题目的难度是依次递进的,还结合…

动态规划之打家劫舍

动态规划之打家劫舍 文章目录 动态规划之打家劫舍1. "198. 打家劫舍"2. "198. 打家劫舍(变种:输出路径)"3. "213. 打家劫舍 II"4. "337. 打家劫舍 III" 1. “198. 打家劫舍” dp数组定义&#xff1a…

oracle 根据部分字段去重

问题:在oracle中使用group by分组,group by子句中必须包含所有的select中的字段和order by子句中的字段。 在不使用group by子句的情况下,进行分组。(根据部分字段分组) over()分析函数 原sql SELECTIM. ID mediaGrou…

oracle字段去重查询,oracle怎么去重查询

oracle去重查询的方法是: oracle 数据库多字段去重 方法介绍:distinct 关键字、group by 、row_number ()over(partition by 列 order by 列 desc) 我的需求是:根据某几列去重 查询出去重后的全部信息。最后我选择的是第三种方法。 我的想法&…

oracle 数据去重方法

1. 创建表: -- Create table create table TEST_USER (user_id NUMBER(3),user_name VARCHAR2(20),user_age NUMBER(3) ) tablespace GUAN_TABLESPACEpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);--测试数据…

oracle 字符串去重

select regexp_replace(1,1,3,5,5, ([^,])(,\1)*(,|$), \1\3) from dual;注意: 但是,这个去重,必须建立在排序的基础上,如果listagg拼接出来的数值像 a, b, a, c 这时候,该正则就会失效。

MYSQL/ORACLE多字段去重-根据某字段去重

通过百度上的答案多数无效 自己搞了个 使用oracle row_number()函数,给每个同名的加一个序号,最后筛选第n个想同的即可 oracle与mysql不同 1.oracel 多字段distinct(字段名去重) group by去重失效 可以用row_number() over(partition) 给同名列加个序号…

Oracle 数据去重

在Oracle数据库中删除重复数据 一,查询及删除重复记录的SQL语句 Person01表: 1. 查询表中多余的重复数据,根据ID字段来判断是否重复 SELECT * FROM PERSON01 WHERE ID IN (SELECT ID FROM PERSON01 GROUP BY ID HAVING COUNT(ID) > 1)…

Oracle根据多列去重

(1)distinct 关键词 distinct用于返回唯一不同的值,可作用于单列和多列 但必须将其放在开头,否则会提示错误 而若在其后添加多个变量名,则返回的将是这多个变量名不同时重复的列,因而使用distinct筛选某…

oracle 数据库去重查询

oracle数据库中有如下一张表,包含id,loginid,name,researchtime等字段,其中name字段中的数据有重复,查询数据时要重复数据只取一条,利用row_number ()over(partition by 列 order by 列 desc)方法实现 1:select a.,row_number() o…

oracle去重函数

1、distinct (1)、常用的distinct select distinct column from table; (2)、统计去重后数量 select count(distinct column) from table;–查去重后数量 (3)、distinct必须放在开头 select id, distinct n…

oracle 数据库 去重查询

oracle 数据库多字段去重 方法介绍:distinct 关键字、group by 、row_number ()over(partition by 列 order by 列 desc) 我的需求是:根据某几列去重 查询出去重后的全部信息。最后我选择的是第三种方法。 我的想法:我想找出一种更简单的方…

Oracle实现去重的两种方式总结

业务场景 需要查询某数据,由于需要三张表关联查询,查询结果如下: 原始SQL语句 SELECT D.ORDER_NUM AS "申请单号" ,D.CREATE_TIME ,D.EMP_NAME AS "申请人",(SELECT extractvalue(t1.row_data,/root/row/FI13_wasteNam…

mysql默认密码的查找与修改

注:此方法仅可用于初始安装数据库或学习时使用,在实际生产中会使所有数据库文件删除,故应先提前备份相关重要数据,以免造成不必要的损失,请谨慎使用。 若使用mysqld –initialize初始化mysql数据库,会产生一…