Python 适合内存加载时间的数据集上的Dask
我知道dask的主要用途是用于内存中不适合的数据,但我还是很好奇。Python 适合内存加载时间的数据集上的Dask,python,dataframe,dask,Python,Dataframe,Dask,我知道dask的主要用途是用于内存中不适合的数据,但我还是很好奇。 为什么在创建熊猫数据帧和Dask数据帧时会有时间上的差异?(我读过关于开销的文章,但它是否应该如此重要?) 您不应该期望数据帧的加载速度更快。在某种程度上,系统需要 -从磁盘传输字节(固定成本) -解析文本(此部分可并行化) -在工作人员之间传递数据(这可能涉及昂贵的序列化和通信) -连接(这会占用大量内存,如果周围有很多工作人员,那么可能会很昂贵) 所需的时间在很大程度上取决于您使用的调度程序,因为这会影响需要多少数据副本以
为什么在创建熊猫数据帧和Dask数据帧时会有时间上的差异?(我读过关于开销的文章,但它是否应该如此重要?)
您不应该期望数据帧的加载速度更快。在某种程度上,系统需要 -从磁盘传输字节(固定成本) -解析文本(此部分可并行化) -在工作人员之间传递数据(这可能涉及昂贵的序列化和通信) -连接(这会占用大量内存,如果周围有很多工作人员,那么可能会很昂贵) 所需的时间在很大程度上取决于您使用的调度程序,因为这会影响需要多少数据副本以及发生多少通信。您可能希望尝试分布式调度程序,使用不同的线程和进程混合。编组任务总是有一些开销 dask模型是将计算转移到数据,而不是反过来。如果您对dask数据帧(筛选、分组、计算、聚合)进行操作,并且仅对相对较小的输出执行
.compute()
,则计算将在数据也加载的同一工作人员中进行,从而消除串行化和通信成本
不过,一般来说,如果数据能很好地存储在内存中,那么熊猫可能在速度方面做得很好