在一个通过 qsub 在具有 256GB 内存的集群上运行的程序中,我有一个总计 30GB 的大型全局记录数组。我目前是该集群上的唯一用户,因此与 RAM 的分配没有冲突。当在这个重新阵列上循环时,系统似乎将对象分流到磁盘上,而不是将其保存在 RAM 中,从而使循环速度减慢了 5 倍以上。我一直在研究通过以下方式在对象上使用 mmap 并收到以下错误。
m = mmap.mmap(myrecarray, 0)
MMAP TypeError: only length-1 arrays can be converted to Python scalars
m = mmap.mmap(myrecarray.fileno(), 0)
AttributeError: record array has no attribute fileno
是否可以用来在 RAMmmap
中保存一个recarray
对象,或者这是对 mmap 方法的完全滥用,还是只能对其他对象类型(如字符串或文件)执行此操作?
非常感谢