多处理中的共享内存对象
在 Python 的多处理库中,您面临着同时在多个进程之间共享大型只读数组的挑战。
使用 Fork() 语义
如果您的操作系统使用写时复制 fork() 语义(例如 Unix),您的只读数据结构将所有子进程都可以访问,而无需额外的内存消耗。这是因为 fork() 创建了一种写时复制操作,因此一个进程对数据结构的更改只会写入到自己的内存空间,而其他进程则保持原始数据结构不变。
将数组打包到共享内存中
为了提高效率,请将数组转换为 NumPy 或数组结构并将其存储在共享内存中。围绕它创建一个 multiprocessing.Array 包装器并将其传递给您的函数。
可写共享对象
如果您需要可写共享对象,请使用同步或锁定机制。多处理提供两种方法:
Manager 代理方法可以处理任意 Python 对象,但由于进程间通信涉及对象序列化和反序列化,速度较慢。
替代方法
除了多处理之外,Python 中还有各种并行处理库。如果您有多重处理可能无法充分满足的特定要求,请考虑这些选项。
以上是如何在 Python 的多处理中的多个进程之间共享大型只读数组?的详细内容。更多信息请关注PHP中文网其他相关文章!