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. Haproxy小酌

    1.Haproxy简介 负载均衡: 基于软件:HAProxy(四层+七层),Nginx(七层) 基于操作系统:LVS(四层) 作用:实现高可用,负载均衡,基于TCP(第四层)和HTTP(第七层)的应用 ...

  2. Java -- 基于JDK1.8的ArrayList源码分析

    1,前言 很久没有写博客了,很想念大家,18年都快过完了,才开始写第一篇,争取后面每周写点,权当是记录,因为最近在看JDK的Collection,而且ArrayList源码这一块也经常被面试官问道,所 ...

  3. python迭代器的原理及应用

    ''''什么是迭代器?迭代的工具1.什么是迭代? 迭代是一个重复的过程,每一次重复都是基于上一次结果而进行的while True: print('hello world')像上面做这种单纯的重复并不是 ...

  4. 缺陷的背后---LIMIT M,N 分页查找

    一.问题发现篇 最近组内做了一次典型缺陷分享时,翻阅2018年的缺陷,找到了一个让我觉得“有料”的bug(别的同事测试发现的),先大致简单的描述下这个问题: 需要实现的功能:从一个DB库同步某一段时间 ...

  5. ECMAScript6 入门教程记录 变量的解构赋值

    (1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...

  6. 2017-2018-2 20155228 《网络对抗技术》 实验一:PC平台逆向破解

    2017-2018-2 20155228 <网络对抗技术> 实验一:PC平台逆向破解 实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用 ...

  7. OSM自建服务

    1.  安装PostgreSQL. 2.  安装PostGis(安装目录为PostgreSQL目录). 3.  安装osm2pgsql. osm2pgsql下载地址:http://customdebu ...

  8. Java面试题整理---网络篇

    1.BIO.AIO和NIO的概念及区别? 2.什么是长连接和短连接? 3.http1.0.http1.1和http2.0的区别? 4.https和http的区别?   5.https的工作原理?   ...

  9. Oarcle之单行函数(下)

    1.字符函数 ltrim 去除字符串左边指定字符,如果不设定第二个参数,则默认去除空格 rtrim去除字符串右边指定字符,如果不设定第二个参数,则默认去除空格 例如:select ltrim (‘a  ...

  10. git+webpack项目初始化<一>

    目录结构 src + page view image service util git初始化 linux常用命令 rm -rf mmall-fe/ 删除 mkdir mmall-fe 创建文件夹 ls ...