IPC进程间通讯

一、IPC(Inter-Process Communication)

空间复用 中内存隔离开了多个进程直接不能直接交互

1、几种方式 :

1.创建一个共享文件

​ 缺点: 效率较低

​ 优点: 理论上交换的数据量可以非常大

​ 适用于: 交互不频繁 且数据量较大的情况

2.共享内存 (主要方式)

​ 缺点: 数据量不能太大

​ 优点: 效率高

​ 适用于: 交互频繁,但是数据量小

3.管道

​ 管道也是基于文件的 它是单向的 编程比较复杂

4.socket

​ 编程复杂,更适用于基于网络来交换数据

二、共享内存的三种方式

1、Manger

可以为我们创建 进程间同步的容器,但是没有处理安全问题 ,所以并不常用

2、Queue

Queue 翻译为队列 是一种特殊的容器 特殊之处在于存取顺序为先进先出

可以帮我们完成进程间通讯

from multiprocessing import Queue

q = Queue(2) # 创建队列 并且同时只能存储2个元素
q.put(1)
q.put(2)

# q.put(3,block=True,timeout=3) # 默认是阻塞的 当容器中没有位置了就阻塞 直到有人从里面取走元素为止
print(q.get())
print(q.get())
print(q.get(block=True,timeout=3))# 默认是阻塞的 当容器中没有位置了就阻塞 直到有人存入元素为止

扩展: 栈

也是一种特殊的容器 特殊在于 存取顺序为 先进后出

函数调用栈

调用函数时 称之为 函数入栈

函数执行结束 称之为函数出栈

猜你喜欢

转载自www.cnblogs.com/chuwanliu/p/11134360.html