【问题标题】:Is it possible to mmap a recarray in python 2.7?是否可以在 python 2.7 中映射一个重新数组?
【发布时间】:2014-02-07 20:46:00
【问题描述】:

在一个通过 qsub 在具有 256GB 内存的集群上运行的程序中,我有一个总计 30GB 的大型全局 rearray 数据。我目前是该集群上的唯一用户,因此与 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

是否可以使用mmap 在 RAM 中保存recarray 对象,或者这是对 mmap 方法的完全滥用,还是只能对其他对象类型(如字符串或文件)执行此操作?

非常感谢

【问题讨论】:

    标签: python numpy mmap recarray


    【解决方案1】:

    您可能想要使用numpy.memmapnumpy.load 而不是mmap 打开数据文件。

    或查看answer to "using numpy.memmap to map a device file" 了解替代方法。

    【讨论】:

    • 欢呼@iljau,我会研究一下,但我试图将它作为python对象读取,以便利用数据结构的有用元素,例如通过字段名称访问,不要认为从文件中读取是可能的。认为整体方法将不得不改变。干杯。
    【解决方案2】:

    这里已经回答了这个问题...

    http://www.biostars.org/p/92704/#92764

    本质上这是对 mmap 方法的完全滥用。它似乎只对文件或字符串有用,而不是任何复杂的数据结构。

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2017-01-20
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多