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 baozi == None:
            print(‘都吃完了大哥,该回家伺候嫂子了‘)
            break
        print(baozi+‘被吃了‘)

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

    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/10267375.html

时间: 2024-11-05 21:51:23

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

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__ == '__m

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

什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型? 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

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基础 信号量 semaphore evevt 线程queue 生产者消费者模型

线程锁相当于同时只能有一个线程申请锁,有的场景无数据修改互斥要求可以同时让多个线程同时运行,且需要限制并发线程数量时可以使用信号量 1 import threading, time, queue 2 3 def test(name): 4 semaphore.acquire() #获取信号量锁 5 print('my name is %s' %name) 6 time.sleep(1) 7 semaphore.release() #释放信号量锁 8 9 semaphore = threading

使用队列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

Python生产者消费者模型

用多线程和队列来实现生产者消费者模型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import threading import queue import time q = queue.Queue() def Producer(name): count = 1 while True: q.put("面包%s" %count) print("[%s]做了[%s]个面包" %(name,cou

生产者消费者模型及队列,进程池

生产者消费者模型 生产者消费者模型 主要是为了解耦 可以借助队列来实现生产者消费者模型 栈 : 先进后出(First In Last Out 简称 FILO) 队列 : 先进先出(First In First Out 简称 FIFO) import queue #不能进行多进程之间的数据传输(1) from multiprocessing import Queue #借助Queue解决生产者消费者模型,队列是安全的q=Queue(num)num : 队列的最大长度q.get() #阻塞等待获取数