Dask中compute()的目的

时间:2019-01-31 01:34:57

标签: python pandas dataframe lazy-evaluation dask

.compute()numpy中模仿功能的额外pandas背后的后勤工作是什么?仅仅是为了支持某种惰性评估吗?

下面Dask documentation中的示例:

import pandas as pd                     import dask.dataframe as dd
df = pd.read_csv('2015-01-01.csv')      df = dd.read_csv('2015-*-*.csv')
df.groupby(df.user_id).value.mean()     df.groupby(df.user_id).value.mean().compute()

1 个答案:

答案 0 :(得分:0)

是的,您的直觉在这里是正确的。默认情况下,大多数Dask集合(数组,包,数据帧,延迟的)都是惰性的。正常操作是延迟的,而调用compute实际上触发执行。

这很重要,不仅可以进行少量的光优化,而且还可以支持低内存执行。例如,如果您要致电

x = da.ones(1000000000000)
total = x.sum()

如果我们立即运行,那么有时会认为您希望计算完整的数组,如果您在一台机器上,那将是不幸的。但是,如果我们知道您只想要total.compute(),那么我们可以在更小的内存中计算该值。