并发编程 之 IPC机制

IPC机制:进程间通信,有两种实现方式:

一种:pipe:管道

二种:pipe(管道)+锁(队列)

实现通信兼进程   用队列

from multiprocessing import Queue   
#
Queue  队列

q=Queue(3) #queue占得是内存空间,队列 是 先进先出,括号里的3,代表队列大小为3个,只能放3个。

注意:
1,队列占用的是内存空间
2,不应该往列队中放大数据,应该只存放数据量较小的消息。

from multiprocessing import Queue
q=Queue(3)
q.put('first')
q.put({'k':'second'})
q.put(['third',])
# q.put(4) #放第四个的时候,需要等前面有人释放锁后才能放进去
print(q.get())
print(q.get())
print(q.get())
print(q.get()) #第四次的时候,会一直等待着有人释放,才能拿到,不然程序不结束。








#了解的
# q=Queue(3) #先进先出
# q.put('first',block=True,timeout=3)
# q.put({'k':'sencond'},block=True,timeout=3)
# q.put(['third',],block=True,timeout=3)
# print('===>')
# # q.put(4,block=True,timeout=3)
#
#
# print(q.get(block=True,timeout=3))
# print(q.get(block=True,timeout=3))
# print(q.get(block=True,timeout=3))
# print(q.get(block=True,timeout=3))

注意:当block=True 时,才有阻塞,才有 timeout=3,(超时间等待的概念)
当block=false时,说明无阻塞,加timeout(等待时间)无意义。当队列满了,直接抛出异常,不会阻塞
# q=Queue(3) #先进先出
# q.put('first',block=False,)
# q.put({'k':'sencond'},block=False,)
# q.put(['third',],block=False,)
# print('===>')
# # q.put(4,block=False,) # 队列满了直接抛出异常,不会阻塞
#
# print(q.get(block=False))
# print(q.get(block=False))
# print(q.get(block=False))
# print('get over')
# print(q.get(block=False))
#

转载于:https://www.cnblogs.com/fxc-520520/p/9301402.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值