【问题标题】:Long writing time, short reading time from hdf5 file to numpy stack using Dask写入时间长,使用 Dask 从 hdf5 文件到 numpy 堆栈的读取时间短
【发布时间】:2020-04-06 02:45:29
【问题描述】:

我正在用 Dask 做一个有点复杂的实验,所以我不能真正提供代码 sn-p。本实验使用只有一个线程 ('single-thread') 的 dask 线程调度程序从单个 hdf5 文件加载大小约为 5GB 的数组,并使用 dask 数组的 to_npy_stack 方法将其写回 50 个 npy 文件。我分两部分进行,一是加载 2.5GB 的缓冲区,二是加载 2.5GB 的缓冲区。读写是在硬盘上完成的,因此我选择使用一个线程。正如我们在下图中看到的那样,dask 诊断表明黄色的写入时间(在一个 numpy 文件中每次写入一个任务)比读取部分(2 个蓝色任务)要长得多。

有人知道为什么阅读时间比写作时间快得多吗?从下图中我们可以看到,我在缓存上加载了 2.5GB,因此 hdf5 文件的解压缩似乎没有延迟。是不是to_numpy_stack函数没有优化好?

PS:是的,我的 dask 诊断在中间图表中失败,我不知道为什么它取决于我将它放在代码中的位置。不过不管怎样……

编辑:这似乎是numpy文件的通常写入时间,所以也许只是使用hdf5大大提高了读取速度,即使它必须解压缩?

【问题讨论】:

    标签: arrays numpy store dask hdf5


    【解决方案1】:

    您可能正在对 numpy 文件(如 gzip)使用慢速压缩。我建议分析您的代码,以便您了解导致速度下降的原因。

    因为您使用单线程调度程序,任何传统的 Python 分析工具(如 cProfile)都应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 2020-08-20
      • 2017-09-23
      • 2020-10-01
      • 2019-05-25
      • 2018-07-04
      • 2023-03-06
      • 2019-06-15
      • 2014-01-23
      相关资源
      最近更新 更多