Dask如何在线程调度程序中利用多线程?

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

我对Dask的本地线程调度程序感兴趣。该调度程序可以使用多个线程以“并行”方式从多维数组加载数据块。我对I / O限制的问题感兴趣,因此我暂时不考虑计算密集型应用程序。

这个事实似乎已经通过我使用Dask的store方法从随机数组加载和保存数据所做的一些速度测试得到了验证:随着块大小的增加,性能会降低(可能是因为最小的块会增加并行度)。在本实验中,我正在处理没有物理块的hdf5文件:1个数据集,其中包含数组中的所有数据。

我有两个问题:1)当顺序读取HDD时,Dask如何在读取数据时具有并行性?2)当python GIL应该防止线程同时将数据保存到内存中时,Dask如何在读取中具有并行性?

谢谢您的时间。

multithreading scheduling dask
1个回答
0
投票

当在HDD上顺序读取时,Dask如何在读取数据时具有并行性?

您是正确的,如果您受硬盘读取的约束,那么使用多个线程应该没有任何性能上的好处。

但是,除了从硬盘读取数据外,可能还有其他工作要做。

  • 您的数据可能以HDF格式压缩,需要一些CPU工作才能对其进行解压缩
  • 您可能不只是读取数据,而是对数据做一些操作,这些操作可以与IO任务交错进行

当Python GIL应该阻止线程同时将数据保存到内存中时,Dask如何在读取中具有并行性?

Python的GIL对于数字工作负载并不是什么大问题,数字工作负载的大部分计算都在链接的C / Fortran库中进行。通常,如果您要在数字数据上使用类似Numpy的库,则GIL不太可能影响您。

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