python - 为什么 Python 的多处理模块只支持两种数据类型?
问题描述
根据 Python 的多处理文档:
可以使用 Value 或 Array 将数据存储在共享内存映射中。
共享内存的处理方式是否与通常分配给进程的内存不同?为什么 Python 只支持两种数据结构?
我猜它与垃圾收集有关,并且可能与 GIL 存在的原因相同。如果是这种情况,如何/为什么将Value和Array实现为例外?
解决方案
我不是这方面的专家,所以定义不是一个完整的答案。我认为这有几点考虑:
- 进程有自己的内存空间,因此如果我们在进程之间共享“正常”变量并尝试写入每个进程将有自己的副本(可能使用写时复制语义)。
- 共享内存需要某种抽象或原语,因为它存在于进程内存之外(SOURCE)
Value
并且Array
,默认情况下,通过使用锁保护访问,处理共享内存的分配并保护它,线程/进程对于并发使用是安全的:)
所附文件能够回答,是的:
共享内存的处理方式是否与通常分配给进程的内存不同?
推荐阅读
- r - 运行闪亮的应用程序时如何仅运行特定的mac地址
- php - 使用没有图像名称的父目录在 html 页面上显示图像
- r - ggplot2 - 如何替换图例中的几何符号?
- javascript - 在谷歌网络应用脚本中使用three.js - 无法使用脚本模块类型加载three.js
- reactjs - React - 当浏览器开始绘制或重新绘制哪个生命周期方法结束时?
- java - 请高中需要帮助;将输出写入文件(使用距离程序)?
- ios - App Store Connect 操作错误:密钥 com.apple.developer.healthkit.access 的 ITMS-90164 []
- html - 如何使按钮中的字体真棒图标可点击?
- java - LibGDX - 只有一半的屏幕是活动的游乐场
- numpy - 在 numpy 中,分别将 N 个百分位数应用于 N x M 数组