Назначение compute () в Dask - PullRequest
0 голосов
/ 31 января 2019

Какая логистика стоит за наличием дополнительных .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()

1 Ответ

0 голосов
/ 31 января 2019

Да, ваша интуиция здесь верна.Большинство коллекций Dask (array, bag, dataframe, delayed) по умолчанию ленивы.Нормальные операции ленивы, в то время как вызов compute фактически запускает выполнение.

Это важно как для того, чтобы мы могли выполнить небольшую оптимизацию, так и для поддержки выполнения с небольшим объемом памяти.Например, если бы вам нужно было вызвать

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

И если бы мы сразу же запустились, то было бы время, когда мы думали, что вы хотите вычислить полный массив, что было бы прискорбно, если бы вы работали на одной машине,Но если мы знаем, что вы хотите только total.compute(), тогда мы можем вычислить эту вещь в гораздо меньшей памяти.

...