清除numpy.memmap

时间:2011-05-16 18:13:59

标签: python numpy mmap memory-mapped-files large-data

给定用numpy.memmap创建的mode='r'对象(即只读),有没有办法强制它从物理RAM中清除所有已加载的页面,而不删除对象本身?

换句话说,我希望memmap实例的引用保持有效,但是用于缓存磁盘数据的所有物理内存都是未提交的。对memmap数组的任何视图也必须保持有效。

我希望将其用作诊断工具,以帮助将脚本的“真实”内存要求与使用memmap引起的“瞬态”要求分开。

我在RedHat上使用Python 2.7。

1 个答案:

答案 0 :(得分:2)

如果你运行“pmap SCRIPT-PID”,“真实”内存显示为“[anon]”块,所有内存映射文件都显示在最后一列中的文件名。

如果您设法获得指向映射开头的指针并在其上调用madvise(ptr,length,MADV_DONTNEED),则可以在C级别清除页面,但这将是cludgy。