进程间的通信
Posted gumpyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程间的通信相关的知识,希望对你有一定的参考价值。
1.multiprocessing.Queue()
以Queue为例,在父进程中创建两个子进程,一个往Queue里写数据,一个从Queue里读数据:
multiprcessing.Queue.put() 为 入队操作
multiprcessing.Queue.get() 为 出队操作
队列 线程 和 进程 安全
put(obj[, block[, timeout]])
将obj放入队列。 如果可选参数 block为True(默认值),timeout为None(默认值),则必要时阻止,直到空闲插槽可用。 如果超时是正数,它将阻止最多超时秒数,如果在该时间内没有空闲插槽可用,则会引发Queue.Full异常。 否则(块为False),如果空闲插槽立即可用,则将一个项目放在队列中,否则会引发Queue.Full异常(在这种情况下,忽略超时)。
get([block[, timeout]])
从队列中删除并返回一个项目。 如果可选的args块为True(默认值),超时为None(默认值),则在必要时阻止,直到项目可用。 如果超时为正数,则它将阻塞至多超时秒数,并在该时间内没有可用项目时引发Queue.Empty异常。 否则(block为False),如果一个项目立即可用,返回一个项目,否则会引发Queue.Empty异常(在这种情况下,忽略超时)。
from multiprocessing import Queue q = Queue(5) q.put(‘A‘) q.put(‘F‘) q.put(‘B‘) q.put(‘C‘) q.put(‘D‘) print(q.qsize()) q.put(‘E‘, timeout=2)
q.full()用来判断队列是否已满
q.empty()判断队列是否是空的
参考文档:https://blog.csdn.net/HeatDeath/java/article/details/72844120
以上是关于进程间的通信的主要内容,如果未能解决你的问题,请参考以下文章
python全栈开发day32-进程创建,进程同步,进程间的通信,进程池