进程间通信(IPC)

1.必要性: 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。

2.常用进程间通信方法:管道通信、消息队列、共享内存、信号量

管道通信(Pipe)

1.通信原理:在内存中开辟管道空间,生成管道操作对象,多个进程使用同一个管道对象进行读写即可实现通信

2.实现方法

from multiprocessing import Pipe

fd1,fd2 = Pipe(duplex = True)

  • 功能: 创建管道
  • 参数:默认表示双向管道
  • 如果为False 表示单向管道
  • 返回值:表示管道两端的读写对象
  •   如果是双向管道均可读写
  •   如果是单向管道fd1只读 fd2只写

fd.recv()

  • 功能 : 从管道获取内容
  • 返回值:获取到的数据

fd.send(data)

  • 功能: 向管道写入内容
  • 参数: 要写入的数据
 1 from multiprocessing import Process,Pipe
 2 import os,time
 3 
 4 # 创建管道对象
 5 # False fd1只能recv fd2只能send
 6 fd1,fd2 = Pipe(False)
 7 
 8 def read():
 9   while True:
10     data = fd1.recv()  # 从管道获取消息
11     print(data)
12 
13 def write():
14   while True:
15     time.sleep(2)
16     fd2.send({'name':'Lily'}) # 向管道发送内容
17 
18 r = Process(target=read)
19 w = Process(target=write)
20 r.start()
21 w.start()
22 r.join()
23 w.join()
管道通信示例

相关文章: