进程间的通信

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

进程间的通信

上一篇:操作系统——2.1-2进程的状态与转换


下一篇:Learn Memcached