import time
import random
import queue
from multiprocessing import Process,Queue
案例一:
def consumer(q,name):
while True:
food = q.get()
if food is None:
break
time.sleep(random.uniform(0.5,1))
print('%s消费了%s'%(name,food)) def producer(q,name,food):
for i in range(5):
time.sleep(random.uniform(0.3,0.8))
print('%s生产了%s'%(name,food))
q.put(food+str(i)) if __name__ == '__main__':
q = Queue()
c1 = Process(target=consumer, args=(q, "消费者1"))
c2 = Process(target=consumer, args=(q, "consuer2"))
# c1.daemon = True
c1.start()
c2.start()
p1 = Process(target=producer, args=(q, "生产者1", "产品1"))
p2 = Process(target=producer, args=(q, "生产者2", "产品2"))
p1.start()
p2.start() p1.join()
p2.join()
q.put(None)
q.put(None)
案例二:
承接上面导入的包
from multiprocessing import Process,JoinableQueue

def consumer(q,client):
while True:
product = q.get()
time.sleep(random.uniform(0.6,2.2))
print('%s购买了 %s' %(client,product))
q.task_done() def producer(q,client,product):
for i in range(5):
time.sleep(random.uniform(0.2,0.9))
print('%s 制造了 %s' %(client,product+str(i)))
q.put(product+str(i)) if __name__ == '__main__':
jq = JoinableQueue()
p1 = Process(target=consumer,args=(jq,'消费者one'))
p1.daemon = True
p1.start() p2 = Process(target=producer,args=(jq,'生产者one','黄金'))
p2.start()
p2.join()
jq.join()
二的执行结果之一:
生产者one 制造了 黄金0
生产者one 制造了 黄金1
生产者one 制造了 黄金2
消费者one购买了 黄金0
生产者one 制造了 黄金3
生产者one 制造了 黄金4
消费者one购买了 黄金1
消费者one购买了 黄金2
消费者one购买了 黄金3
消费者one购买了 黄金4
 

Python生产者producer和consumer消费者案例写法,含有多线程,包含队列queue、JoinableQueue队列的用法的更多相关文章

  1. python编写producer、consumer

    自主producer.consumer 首先在不同的终端,分别开启两个consumer,保证groupid一致 ]# python consumer_kafka.py 执行一次producer ]# ...

  2. Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现

    队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...

  3. 生产者和消费者模型producer and consumer(单线程下实现高并发)

    #1.生产者和消费者模型producer and consumer modelimport timedef producer(): ret = [] for i in range(2): time.s ...

  4. python生产者消费者模型

    业界用的比较广泛,多线程之间进行同步数据的方法,解决线程之间堵塞,互相不影响. server --> 生产者 client --> 消费者 在一个程序中实现又有生产者又有消费者 ,生产者不 ...

  5. java学习之生产者和消费者案例

    package com.gh.thread; /** * 生产者和消费者案例 * wait和sleep的区别 * wait不让出监视器锁,sleep让出监视器的锁 * @author ganhang ...

  6. Python 生产者与消费者模型

    定义: 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度.     为什么要使用生产者和消费者模式 在线程世界里,生 ...

  7. GUC-13 生产者和消费者案例-旧

    /* * 生产者和消费者案例 */ public class TestProductorAndConsumer { public static void main(String[] args) { C ...

  8. GUC-13 生产者消费者案例

    import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti ...

  9. [b0029] python 归纳 (十四)_队列Queue实现生产者消费者

    # -*- coding: UTF-8 -*- """ 多线程的生产者,消费者 使用队列Queue """ import Queue imp ...

随机推荐

  1. 微信小程序之图片base64解码

    不知道大家在做微信小程序的时候遇到base64解码的问题,我之前在做微信小程序的时候遇到base64解析图片一直有问题,所以在这里把遇到的问题和解决方案在这里记录一下: 在平时的项目中我们是直接用ba ...

  2. js点击什么显示什么的内容,隐藏其它和进度条

    点击什么显示什么的内容 <div style="width:200px; height:40px"> <div class="yiji" st ...

  3. it入门之:学会使用Git 分布式版本控制工具

    环境:window 工具:git & TortoiseGit 下载安装以及配置环境变量 :略略略 创建Github账户:登录https://github.com/用自己的常用邮箱创建账户,用来 ...

  4. sql 查询所有作业的详情

    DECLARE @WeekDays TABLE ( freq_interval INT, weekdays ) ) INSERT INTO @WeekDays ,N'星期日 ' UNION ALL , ...

  5. Windows 10 关闭Hyper-V

    以管理员身份运行命令提示符 关闭 bcdedit /set hypervisorlaunchtype off 启用 bcdedit / set hypervisorlaunchtype auto 禁用 ...

  6. python 对excel操作用法详解

    在python中,对excel表格读,写,追加数据,用以下三个模块: 1.wlrd 读取excel表中的数据 2.xlwt 创建一个全新的excel文件,然后对这个文件进行写入内容以及保存. 3.xl ...

  7. IO流(二)

    二.File类 概述 文件和目录路径名的抽象表示形式 构造方法 public File(String pathname) public File(String parent,String child) ...

  8. [flutter+dart] windows7下开发环境的安装与配置

    前言 博主是做嵌入式的,参加工作时间也不久,而且是非科班出身,之前从未接触过移动开发.最近了解到了flutter框架和dart语言,想作为第二语言学习一下,因此会从最基础的环节开始,以此博客作为记录, ...

  9. Java8过滤器(Filter)

    1.在Java之前对List进行过滤的方式 public class BeforeJava8 { public static void main(String[] args) { List<Pe ...

  10. 20190317 A

    今天是学长wsy的题,我理论会100+50+30=180,实际100+20+10=130,充分体现我的菜 最近日常模拟赛挂分50到60,很危险,这2天一定要调整好... Upd:T2我认为50的划分数 ...