首页 > 解决方案 > 为什么 Python 的多处理模块只支持两种数据类型?

问题描述

根据 Python 的多处理文档

可以使用 Value 或 Array 将数据存储在共享内存映射中。

共享内存的处理方式是否与通常分配给进程的内存不同?为什么 Python 只支持两种数据结构?

我猜它与垃圾收集有关,并且可能与 GIL 存在的原因相同。如果是这种情况,如何/为什么将ValueArray实现为例外?

标签: pythonmemoryconcurrencymultiprocessing

解决方案


我不是这方面的专家,所以定义不是一个完整的答案。我认为这有几点考虑:

  • 进程有自己的内存空间,因此如果我们在进程之间共享“正常”变量并尝试写入每个进程将有自己的副本(可能使用写时复制语义)。
  • 共享内存需要某种抽象或原语,因为它存在于进程内存之外(SOURCE
  • Value并且Array,默认情况下,通过使用锁保护访问,处理共享内存的分配并保护它,线程/进程对于并发使用是安全的:)

所附文件能够回答,的:

共享内存的处理方式是否与通常分配给进程的内存不同?



推荐阅读