一、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))# 默认是阻塞的 当容器中没有位置了就阻塞 直到有人存入元素为止
扩展: 栈
也是一种特殊的容器 特殊在于 存取顺序为 先进后出
函数调用栈
调用函数时 称之为 函数入栈
函数执行结束 称之为函数出栈