Python 通过队列实现一个生产者消费者模型

import time
from multiprocessing import Process,Queue

#生产者
def producer(q):
    for i in range(10):
        time.sleep(0.7)
        s = ‘大包子%s号‘%i
        print(s+‘新鲜出炉,拿去用‘)
        q.put(s)

def consumer(q):
    while 1:
        time.sleep(1)

        baozi = q.get()
        print(baozi+‘被吃了‘)

if __name__ == ‘__main__‘:
    q = Queue(10)

    pro_p = Process(target=producer,args=(q,))
    con_p = Process(target=consumer,args=(q,))
    pro_p.start()
    con_p.start()

原文地址:https://www.cnblogs.com/demons97/p/10267369.html

时间: 2024-08-01 05:11:22

Python 通过队列实现一个生产者消费者模型的相关文章

Python 再次改进版通过队列实现一个生产者消费者模型

import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time.sleep(0.2) s = '大包子%s号'%i print(s+'新鲜出炉,拿去用') q.put(s) q.put(None) #发送一个任务结束信号,来中断消费者的程序 def consumer(q): while 1: time.sleep(0.5) baozi = q.get() if

如何使用阻塞队列来实现生产者-消费者模型?

什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型? java.util.concurrent.BlockingQueue的特性是:当队列是空的时,从队列中获取或删除元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞. 阻塞队列不接受空值,当你尝试向队列中添加空值的时候,它会抛出NullPointerException. 阻塞队列的实现都是线程安全的,所有的查询方法都是原子的并且使用了内部锁或者其他形式的并发控制. BlockingQueue 接口是java colle

Python学习笔记——进阶篇【第九周】———线程、进程、协程篇(队列Queue和生产者消费者模型)

Python之路,进程.线程.协程篇 本节内容 进程.与线程区别 cpu运行原理 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 参考链接http://www.cnblogs.com/alex3714/articles/5230609.html

4.利用python生成器实现简单的“生产者消费者”模型

假如说,没有生成器这种对象,那么如何实现这种简单的"生产者消费者"模型呢? import time def producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.append("包子%s" %i) return pro_list def consumer(pro_list): for index,stuffe

queue队列,以及生产者消费者模型

queue 队列!特点是有序的,跟list的区别,list调用元素,其实就是复制,还要用remove给删掉,麻烦,queue更加方便 生成队列的方法: class queue.Queue(maxsize=0) #先入先出  #maxsize可以设定队列大小 class queue.LifoQueue(maxsize=0) #last in fisrt out  后进先出,例如卖东西,大家都喜欢新鲜的 class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先

【Python】协程实现生产者消费者模型

协程的实现为协作式而非抢占式的,这是和进程线程的最大区别.在Python中,利用yield和send可以很容易实现协程. 首先复习下生成器. 如果一个函数使用了yield语句,那么它就是一个生成器函数.当调用这个函数时,它返回一个迭代器.当第一次调用__next__()时候,生成器函数主体开始执行,遇到yield表达式时候终止. 当使用__next__()方法时候,yield value语句返回None:当使用send(v)方法时候,yield value返回v.也就是说,__next__()方

Python基础-----生成器函数(生产者消费者模型)

#!/usr/bin/env python# -*- coding:utf-8 -*- # yield x相当于return 控制的是函数的返回值# 在定义生成器函数的yield时,可以给yield赋值# x = yield的另一个特性,接收send传过来的值,赋给x# send类似于__next__()方法,不过生成器刚启动时,不能send一个不为None的值,# 所以先要运行__next__()方法现启用生成器. '''def test(): print('开始生产~~~') fir = y

使用队列queue实现一个简单的生产者消费者模型

一.生产者消费者模型 我们去超市商店等地购买商品时,我们大部分人都会说自己是消费者,而超市的各大供货商.工厂等,自然而然地也就成了我们的生产者.如此一来,生产者有了,消费者也有了,那么将二者联系起来的超市又该作何理解呢?诚然,它本身是作为一座交易场所而诞生. 上述情形类比到实际的软件开发过程中,经常会发现:某个线程或模块的代码负责生产数据(工厂),而生产出来的数据却不得不交给另一模块(消费者)来对其进行处理,在这之间使用了队列.栈等类似超市的东西来存储数据(超市),这就抽象除了我们的生产者/消费

python2.0_s12_day9之day8遗留知识(queue队列&生产者消费者模型)

4.线程 1.语法 2.join 3.线程锁之Lock\Rlock\信号量 4.将线程变为守护进程 5.Event事件 * 6.queue队列 * 7.生产者消费者模型 4.6 queue队列 queue非常有用,当信息必须安全的在多个线程之间进行数据交换的时候就应该想到queue 所以,queue它能保证数据被安全的在多个线程之间进行交换,那他就是天生的线程安全. queue有那么几种: class queue.Queue(maxsize=0) # 先入先出 class queue.LifoQ