缘接上文,
Python多任务开发
。
6.单个进程间的通讯Queue
使用队列进行进程与进程之间的通讯,通过multiprocessing.Queue(maxsize)对象进行通信。FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。
中有两个方法一个是, 一个是
1)put(obj[, block[, timeout]])
a.如果可选的参数block为True且timeout为空对象(默认的情况,阻塞调用,无超时)。
b.如果是个正整数,阻塞调用进程最多timeout秒,如果一直无空空间可用,抛出Full异常(带超时的阻塞调用)。
c.如果block为False,如果有空闲空间可用将数据放入队列,否则立即抛出Full异常
其非阻塞版本为等同于
2)get([block[, timeout]])
从队列中删除并返回一个数据。block为True,说明get取值时是阻塞的要先判断队列是否为空,不为空在取值,否则会提示Empty异常。就是超时时间。其非阻塞方法为相当与get(False)
3)例子
木匠一家一顿腹泻后,最终还是叫救护车送医院了。之后多辆救护车到达并把他们送到医院,并在到达后医护人员再次确认伤员是否全部到达,等待医护人员处理。
7.进程池之间通信
通过实现进程池之间的通信,如果使用的是Pool创建进程,就需要使用中的,当使用,会报错误信息:
进程池
线程间通信
领取专属 10元无门槛券
私享最新 技术干货