You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何可靠检测NumPy数组是否通过mmap共享内存?

NumPy数组内存共享检测的盲区:mmap场景失效

之前有一个关于「如何检测NumPy数组是否共享同一数据」的问题,但现有所有方案都无法检测通过mmap内存映射实现的数组内存共享。

复现代码示例

import numpy as np
x = np.zeros(2)
np.save('/dev/shm/x', x)
y = np.load('/dev/shm/x.npy', mmap_mode = 'r+')
z = np.load('/dev/shm/x.npy', mmap_mode = 'r+')
assert y.base is not z.base
assert y.base != z.base
assert y.__array_interface__['data'][0] != z.__array_interface__['data'][0]
assert not np.may_share_memory(y, z)
assert not np.shares_memory(y, z)
y[0] = 1
assert y[0] == z[0] == 1 # 实际上二者共享内存

问题表现

  • 无论是通过数组的base属性、__array_interface__中的内存地址字段,还是NumPy官方提供的np.may_share_memory()、np.shares_memory()方法,都判定数组y和z不共享内存
  • 但实际修改y的元素后,z的对应元素同步发生变化,证明二者确实共享底层的mmap内存

内容的提问来源于stack exchange,提问作者YouJiacheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:50:34