Python如何在多个进程之间共享内存?

6

我读到过进程在不同的内存空间中运行(link)。然而,Python的multiprocessing包提供了共享内存(multiprocessing.Value, multiprocessing.Array)。

  • 这些数据存储在哪个进程中?
  • 子进程通过引用访问这些数据吗?

it does not matter. - kindall
1
也许问题应该是,“Python如何在多个进程之间共享内存?”但对于您的具体问题,它必须在堆中。它不在任何进程空间中。当Python启动每个进程时,它必须查看声明的共享变量并在堆中创建内存空间和引用(第二个问题的答案)。当进程使用它时,multiprocessing模块会执行所有内存锁定以防止数据损坏等问题。这其中还有很多细节,但这就是基础。 - Ron Norris
1
这也因平台而异(例如Windows)。 - anthony sottile
这不是Python的问题,而是操作系统服务的问题。例如共享内存 - Keith
1个回答

4
数据是通过mmap模块创建的共享匿名内存映射来分配的。您可以在这里这里查看代码。请注意,html标签已保留。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接