方式:队列(推荐使用)

一、基本情况

1.可以往队列里放任意类型的数据

2. 队列:先进先出

3.

q=Queue(3)        #可以设置队列中最多可以进入多少个值,也可以不设置
q.put('first')
q.put('second')
q.put('third')
# q.put('fourht') #当设置最多进入3个值时,第四个值过来时就会卡住,只有当第一值 被取出去的时候,第四个值才会进入 print(q.get())
print(q.get())
print(q.get())
# print(q.get()) #当队列中有三个值,而想去取第四个值的时候,也会卡住,只有队列中进入了第四个值的时候才往下运行

4.生产者消费者模型

 #生产者消费者模型1
# from multiprocessing import Process,Queue
# import time
# import random
# import os
# def consumer(q):
# while True:
# res=q.get()
# if res is None:
# break
# time.sleep(random.randint(1,3))
# print('\033[45m%s 吃了 %s\033[0m' % (os.getpid(), res))
# def producer(q):
# for i in range(5):
# time.sleep(2)
# res='包子%s' %i
# q.put(res)
# print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
# q.put(None)
# if __name__ == '__main__':
# q=Queue()
# #生产者们:厨师们
# p1=Process(target=producer,args=(q,))
#
# #消费者们:吃货们
# p2=Process(target=consumer,args=(q,))
#
# p1.start()
# p2.start()
# p1.join()
# p2.join()
# print('主') # #生产者消费者模型2
# from multiprocessing import Process,Queue
# import time
# import random
# import os
# def consumer(q):
# while True:
# res=q.get()
# if res is None:break
# time.sleep(random.randint(1,3))
# print('\033[45m%s 吃了 %s\033[0m' % (os.getpid(), res))
#
# def product_baozi(q):
# for i in range(3):
# time.sleep(2)
# res='包子%s' %i
# q.put(res)
# print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
#
#
# def product_gutou(q):
# for i in range(3):
# time.sleep(2)
# res='骨头%s' %i
# q.put(res)
# print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
#
#
# def product_ganshui(q):
# for i in range(3):
# time.sleep(2)
# res='泔水%s' %i
# q.put(res)
# print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
# if __name__ == '__main__':
# q=Queue()
# #生产者们:厨师们
# p1=Process(target=product_baozi,args=(q,))
# p2=Process(target=product_gutou,args=(q,))
# p3=Process(target=product_ganshui,args=(q,))
#
# #消费者们:吃货们
# p4=Process(target=consumer,args=(q,))
# p5=Process(target=consumer,args=(q,))
#
# # p_l=[p1,p2,p3,p4,p5]
# # for p in p_l:
# # p.start()
# #
# # for p in p_l:
# # p.join()
#
#
# p1.start()
# p2.start()
# p3.start()
# p4.start()
# p5.start()
#
#
# p1.join()
# p2.join()
# p3.join()
# q.put(None)
# q.put(None)
# p4.join()
# p5.join()
#
# print('主') # #生产者消费者模型3
# from multiprocessing import Process,JoinableQueue
# import time
# import random
# import os
# def consumer(q):
# while True:
# res=q.get()
# time.sleep(random.randint(1,3))
# print('\033[45m%s 吃了 %s\033[0m' % (os.getpid(), res))
# q.task_done()
#
# def product_baozi(q):
# for i in range(5):
# time.sleep(2)
# res='包子%s' %i
# q.put(res)
# print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
# q.join()
#
# if __name__ == '__main__':
# q=JoinableQueue()
# #生产者们:厨师们
# p1=Process(target=product_baozi,args=(q,))
#
# #消费者们:吃货们
# p4=Process(target=consumer,args=(q,))
# p4.daemon=True
#
# p1.start()
# p4.start()
#
# p1.join()
# print('主')
# #p2结束了 #生产者消费者模型4
from multiprocessing import Process,JoinableQueue
import time
import random
import os
def consumer(q):
while True:
res=q.get()
time.sleep(random.randint(1,3))
print('\033[45m%s 吃了 %s\033[0m' % (os.getpid(), res))
q.task_done() def product_baozi(q):
for i in range(3):
time.sleep(2)
res='包子%s' %i
q.put(res)
print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
q.join() def product_gutou(q):
for i in range(3):
time.sleep(2)
res='骨头%s' %i
q.put(res)
print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
q.join() def product_ganshui(q):
for i in range(3):
time.sleep(2)
res='泔水%s' %i
q.put(res)
print('\033[44m%s 制造了 %s\033[0m' %(os.getpid(),res))
q.join()
if __name__ == '__main__':
q=JoinableQueue()
#生产者们:厨师们
p1=Process(target=product_baozi,args=(q,))
p2=Process(target=product_gutou,args=(q,))
p3=Process(target=product_ganshui,args=(q,)) #消费者们:吃货们
p4=Process(target=consumer,args=(q,))
p5=Process(target=consumer,args=(q,))
p4.daemon=True
p5.daemon=True p_l=[p1,p2,p3,p4,p5]
for p in p_l:
p.start() p1.join()
p2.join()
p3.join() print('主')

生产者消费者模型进阶

python-day33--进程间通信(IPC)的更多相关文章

  1. Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

    Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

  2. Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

    Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

  3. Linux进程间通信IPC学习笔记之消息队列(SVR4)

    Linux进程间通信IPC学习笔记之消息队列(SVR4)

  4. Android进程间通信IPC

    一.IPC的说明 IPC是Inter-Process Communication的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程. IPC不是Android独有的,任何一个操作 ...

  5. 进程间通信IPC -- 管道, 队列

    进程间通信--IPC(Inter-Process Communication) 管道 from multiprocessing import Pipecon1,con2 = Pipe()管道是不安全的 ...

  6. [原创]chromium源码阅读-进程间通信IPC.消息的接收与应答

    chromium源码阅读-进程间通信IPC.消息的接收与应答   chromium源码阅读-进程间通信IPC.消息的接收与应答 介绍 chromium进程间通信在win32下是通过命名管道的方式实现的 ...

  7. 进程间通信IPC之--无名管道(pipe)和有名管道(fifo)(转)

     进程间通信IPC之--无名管道(pipe)和有名管道(fifo) 2012-01-17 22:41:20 分类: C/C++ 每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中 ...

  8. 进程间通信IPC、LPC、RPC

    进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法.进程是计算机系统分配资源的最小单位.每个进程都有自己的一部分独立的系 ...

  9. 【Android】进程间通信IPC——Binder

    Binder是Android中的跨进程通信方式,bindService的时候,服务端返回Binder对象,通过该对象客户端可以从服务端获取数据.在进程间通信IPC——AIDL中创建了ICustomAi ...

  10. 【Android】进程间通信IPC——AIDL

    AIDL官网定义AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似. 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口. 在 Androi ...

随机推荐

  1. 蓝牙协议 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP

    简介: HSP(手机规格)– 提供手机(移动电话)与耳机之间通信所需的基本功能. HFP(免提规格)– 在 HSP 的基础上增加了某些扩展功能,原来只用于从固定车载免提装置来控制移动电话. A2DP( ...

  2. 各种语言中的可变参数(java、python、c++、javascript)

    索引: java python c++ js 1.Java public class Animal { // 接受可变参数的方法 void eat(String... Objects) { for ( ...

  3. Removing bad blocks from the USB drive with fsck

    An easy way to repair a flash drive, or any drive really, is to use the fsck tool. This tool is grea ...

  4. mybatis 3的TypeHandler深入解析(及null值的处理)

    最近,在测试迁移公司的交易客户端连接到自主研发的中间件时,调用DAO层时,发现有些参数并没有传递,而在mapper里面是通过parameterMap传递的,因为有些参数为null,这就导致了参数传递到 ...

  5. jQuery 对象

    jQuery 对象 版权声明:未经博主授权,严禁转载分享 什么是 jQuery 对象 jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象. jQuery 对象是一个类数组对象. j ...

  6. 04: 事件驱动、五种I/O操作、I/O多路复用select和epoll

    网络编程其他篇 目录: 1.1 事件驱动 1.2 五种I/O操作 1.3 I/O 多路复用之select.poll.epoll详解 1.1 事件驱动返回顶部 1.什么是事件驱动  定义:就是根据不同事 ...

  7. 上周日选拔题部分write up

    ---恢复内容开始--- 第一题.平淡无奇的签到题,“百度一下,你就知道”,打开之后会弹出一个百度的网页页面.网页题第一步,先查看它的源代码.从上往下看,发现了这样一行字 看起来有点像base编码,于 ...

  8. Android移植学习笔记

    1.一头雾水不知道用什么编译环境,不知道用什么下载软件 编译软件:Ubuntu12.04(编译主机系统),JDK(Java) 下载软件: 模拟器: qemu

  9. devicePixelRatio手机图片模糊的原因

    一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的 ...

  10. CSS形变与动画

    形变 2D形变 matrix(): 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a,b,c,d,e,f]变换矩阵 translate(): 指定对象的2 ...