队列:先进先出

# from multiprocessing import  Queue
# Q = Queue(4) # Q.put('a')
# Q.put('b')
# Q.put('b')
# Q.put('c') # print(Q.get())
# print(Q.get())
# print(Q.get())
# print(Q.get())
生产者消费模型
from multiprocessing import Process,Queue
import random,time def product(name,food,Q):
for i in range(3):
res = '%s %s'%(food,i)
Q.put(res)
time.sleep(random.randint(1,3))
print('%s 生产了 %s' %(name,res)) def consumer(name,Q):
while True:
res = Q.get()
if res is None:break
time.sleep(random.randint(1,3))
print('%s 吃了 %s' % (name, res)) if __name__ == '__main__':
Q = Queue()
p1 = Process(target=product,args=('wxx','包子',Q)) # 生产者
p2 = Process(target=product, args=('yxx', '馒头', Q)) # 生产者
p3 = Process(target=product, args=('zxx', '粉丝', Q)) # 生产者 c1 = Process(target=consumer,args=('axx',Q)) # 消费者
c2 = Process(target=consumer, args=('bxx', Q)) # 消费者 p1.start()
p2.start()
p3.start() c1.start()
c2.start() p1.join()
p2.join()
p3.join() Q.put(None)
Q.put(None) print('主...')

模型1

from multiprocessing import Process,JoinableQueue
import random,time def product(name,food,Q):
for i in range(3):
res = '%s %s'%(food,i)
Q.put(res)
time.sleep(random.randint(1,3))
print('%s 生产了 %s' %(name,res)) def consumer(name,Q):
while True:
res = Q.get()
time.sleep(random.randint(1,3))
print('%s 吃了 %s' % (name, res))
Q.task_done() # 队列取完信号 if __name__ == '__main__':
Q = JoinableQueue() # 队列链接
p1 = Process(target=product,args=('wxx','包子',Q)) # 生产者
p2 = Process(target=product, args=('yxx', '馒头', Q)) # 生产者
p3 = Process(target=product, args=('zxx', '粉丝', Q)) # 生产者 c1 = Process(target=consumer,args=('axx',Q)) # 消费者
c2 = Process(target=consumer, args=('bxx', Q)) # 消费者 c1.daemon = True
c2.daemon = True p1.start()
p2.start()
p3.start() c1.start()
c2.start() p1.join()
p2.join()
p3.join() # 保证生产者生产完 Q.join() # 保证队列取完 print('主...')

队列 Queue 与 生产者消费模型的更多相关文章

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

    Python之路,进程.线程.协程篇 本节内容 进程.与线程区别 cpu运行原理 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Ev ...

  2. Python 第九篇:队列Queue、生产者消费者模型、(IO/异步IP/Select/Poll/Epool)、Mysql操作

    Mysql操作: grant select,insert,update,delete on *.* to root@"%" Identified by "123456&q ...

  3. go 语言之 生产者消费模型

    简易的生产者消费模型,通过管道[也可以理解为队列],管道是先进先出,主要是理解chan 生产者使用make将chan初始化,并且设置chan长度,如果不设置,生产者就写入不了通道 go 是使用线程开始 ...

  4. Python守护进程、进程互斥锁、进程间通信ICP(Queue队列)、生产者消费者模型

    知识点一:守护进程 守护进程:p1.daemon=True 守护进程其实就是一个“子进程“,守护=>伴随 守护进程会伴随主进程的代码运行完毕后而死掉 进程:当父进程需要将一个任务并发出去执行,需 ...

  5. python并发编程之多进程(二):互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  6. 进程同步控制(锁,信号量,事件), 进程通讯(队列和管道,生产者消费者模型) 数据共享(进程池和mutiprocess.Pool模块)

    参考博客 https://www.cnblogs.com/xiao987334176/p/9025072.html#autoid-1-1-0 进程同步(multiprocess.Lock.Semaph ...

  7. python开发进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  8. 用阻塞队列实现一个生产者消费者模型?synchronized和lock有什么区别?

    多线程当中的阻塞队列 主要实现类有 ArrayBlockingQueue是一个基于数组结构的有界阻塞队列,此队列按FIFO原则对元素进行排序 LinkedBlockingQueue是一个基于链表结构的 ...

  9. Day9 进程同步锁 进程队列 进程池 生产消费模型 进程池 paramike模块

    进程同步锁: 当运行程序的时候,有可能你的程序同时开多个进程,开进程的时候会将多个执行结果打印出来,这样的话打印的信息都是错乱的,怎么保证打印信息是有序的呢? 其实也就是相当于让进程独享资源. fro ...

随机推荐

  1. rar自动压缩备份

    rem ******MySQL backup start********@echo offforfiles /p "D:\备份\发布软件备份" /m backup_*.sql -d ...

  2. linux命令:查看系统版本

    debian系统 (1)  lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debia ...

  3. Mysql 数据备份导出

    mysqldump导出整个数据库mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \--defa ...

  4. Android多种方法显示当前日期和时间

    文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...

  5. HR_Jumping on the Clouds

    1.没有考虑i+2越界的问题 2.没有考虑结尾三个零导致 -5 3.没有考虑len(c)<2 导致 -5 #!/bin/python3 import math import os import ...

  6. 存在重复元素 II

    题目描述 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: n ...

  7. 如何在jsp中引入bootstrap

    如何在jsp中引入bootstrap包: 1.首先在http://getbootstrap.com/上下载Bootstrap的最新版. 您会看到两个按钮: Download Bootstrap:下载 ...

  8. 洛谷P4774 屠龙勇士

    啊我死了. 肝了三天的毒瘤题......他们考场怎么A的啊. 大意: 给你若干个形如 的方程组,求最小整数解. 嗯......exCRT的变式. 考虑把前面的系数化掉: 然后就是exCRT板子了. 我 ...

  9. 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)

    字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题.这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助. 还是得从ASCII码说起 说到字符编码,不得不说ASCII ...

  10. 使用python制作验证码

    方法一 简单型:使用random模块制作一个随机字母与数字的验证码 import random def make_code(n): res='' for i in range(n): num=str( ...