写入时间长,使用Dask从hdf5文件到numpy堆栈的读取时间短

问题描述 投票:0回答:1

我正在使用Dask进行实验,这有点复杂,因此我无法真正提供代码段。本实验使用仅具有一个线程('single-thread')的dask线程调度程序,从单个hdf5文件中加载大小约为5GB的数组,并使用dask array的npy方法将其写回到50 to_npy_stack文件中。我分两部分进行操作,一个加载2.5GB的缓冲区,第二个加载2.5GB的缓冲区。读写是在HDD上完成的,因此我选择使用一个线程。正如我们在下图所看到的,模糊的诊断程序告诉我,黄色的写入时间(在一个numpy文件中每次写入一个任务)比读取部分(两个蓝色的任务)要长得多。

enter image description here

有人知道为什么阅读时间比书写时间快得多吗?从底部的图表可以看出,我正在缓存上加载2.5GB,因此hdf5文件的解压缩似乎没有延迟。 to_numpy_stack功能是否可能没有得到很好的优化?

PS:是的,我的诊断失败在中间图上失败,我不知道为什么这取决于我将其放在代码中的位置。但是无论如何...

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

arrays numpy store dask hdf5
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.