Dask 中compute() 的用途

Rya*_*ick 5 python lazy-evaluation dataframe pandas dask

.compute()拥有额外的numpy和模仿的功能背后的逻辑是什么pandas?它只是为了支持某种惰性评估吗?

以下Dask 文档中的示例:

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()
Run Code Online (Sandbox Code Playgroud)

MRo*_*lin 2

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

这很重要,这样我们就可以进行一些轻微的优化,也可以支持低内存执行。例如,如果您要致电

x = da.ones(1000000000000)
total = x.sum()
Run Code Online (Sandbox Code Playgroud)

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