2024-05-15 21:25:27 发布
网友
我知道dask的主要用途是存储不适合内存的数据,但我还是很好奇。 为什么在创建Pandas数据帧和Dask数据帧时存在时间差异?(我读过关于管理费用的文章,但它是否应该如此重要?)在
您不应该期望数据帧的加载速度更快。在某种程度上,系统需要 -从磁盘传输字节(固定成本) -解析文本(此部分可并行化) -在工人之间传递数据(这可能涉及昂贵的序列化和通信) -获取连接(这会占用大量内存,因此如果您周围还有很多工作人员,则可能会非常昂贵)
它需要多长时间在很大程度上取决于您正在使用的调度程序,因为这会影响到需要多少数据副本和进行多少通信。您可能希望尝试使用不同的线程和进程混合使用的分布式调度程序。对任务进行编组总是有一些开销。在
dask模型是将计算转移到数据中,而不是相反。如果对dask数据帧(filter、group、compute、aggregate)进行操作,并且只对相对较小的输出执行.compute(),那么计算将在同样的worker中进行,其中数据也在加载,从而消除了串行化和通信开销。在
.compute()
不过,总的来说,如果数据能很好地存储在记忆中,那么熊猫的速度可能相当不错。在
您不应该期望数据帧的加载速度更快。在某种程度上,系统需要 -从磁盘传输字节(固定成本) -解析文本(此部分可并行化) -在工人之间传递数据(这可能涉及昂贵的序列化和通信) -获取连接(这会占用大量内存,因此如果您周围还有很多工作人员,则可能会非常昂贵)
它需要多长时间在很大程度上取决于您正在使用的调度程序,因为这会影响到需要多少数据副本和进行多少通信。您可能希望尝试使用不同的线程和进程混合使用的分布式调度程序。对任务进行编组总是有一些开销。在
dask模型是将计算转移到数据中,而不是相反。如果对dask数据帧(filter、group、compute、aggregate)进行操作,并且只对相对较小的输出执行
.compute()
,那么计算将在同样的worker中进行,其中数据也在加载,从而消除了串行化和通信开销。在不过,总的来说,如果数据能很好地存储在记忆中,那么熊猫的速度可能相当不错。在
相关问题 更多 >
编程相关推荐