进程间的通信

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

以上是关于进程间的通信的主要内容,如果未能解决你的问题,请参考以下文章

请教一个Linux下C语言的进程间的信号问题

python全栈开发day32-进程创建,进程同步,进程间的通信,进程池

VC++ 进程间的通信

python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)

进程间的通信-队列/管道以及进程间的数据共享和进程池

进程间的通信