【问题标题】:Numpy memmap better IO and memory usageNumpy memmap 更好的 IO 和内存使用
【发布时间】:2016-09-06 06:04:08
【问题描述】:

目前我正在使用具有 2,000,000 * 33 * 33 *4 (N * W * H * C) 数据的 NumPy memmap 数组。我的程序从这个数组中读取 随机 (N) 个索引

我有 8GB 内存,2TB 硬盘。 HDD 读取 IO 仅为 20M/s 左右,RAM 使用量保持在 2.5GB。似乎存在 HDD 瓶颈,因为我正在检索显然不在 memmap 缓存中的随机索引。因此,我希望 memmap 缓存尽可能使用 RAM。

我有没有办法告诉 memmap 最大化 IO 和 RAM 使用率?

【问题讨论】:

    标签: python numpy mmap memory-mapped-files


    【解决方案1】:

    (检查我的 python 2.7 源代码) 据我所知,NumPy memmap 使用 mmap。 mmap 确实定义了:

    # Variables with simple values
    ...
    ALLOCATIONGRANULARITY = 65536
    PAGESIZE = 4096
    

    但是我不确定改变这些是否明智(甚至可能)。 此外,这可能无法解决您的问题,并且绝对不会为您提供最有效的解决方案,因为在操作系统级别和硬件级别都有缓存和页面读取(因为对于硬件,读取单个值需要或多或少相同的时间或整页)。

    更好的解决方案可能是对您的请求进行排序。 (我想这里 N 很大,否则只需对它们进行一次排序): 收集一堆(比如一千万或一千万?),然后在提出请求之前,对它们进行排序。然后询问有序查询。然后在得到答案后把它们放回原来的顺序......

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 2014-01-09
      • 2020-12-14
      • 2020-10-10
      • 2012-06-08
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多