Почему используется только рабочий? - PullRequest
0 голосов
/ 03 мая 2019

Я экспериментирую с Dask, запустив локальный кластер с четырьмя рабочими на моем ноутбуке.

Я распределяю фрейм данных Pandas между рабочими, но когда я запускаю на них функцию, я вижу из сводной панели, что на самом деле используется только один из них.

Чего мне не хватает?

Здесь код

from distributed import Client
client = Client('127.0.0.1:56947')
dd = client.scatter(df, broadcast=True) # df is a pandas Dataframe
r = client.submit(process_df, dd) 

1 Ответ

3 голосов
/ 03 мая 2019

Эта строка

dd = client.scatter(df, broadcast=True)

скопировал df каждому из ваших работников. Тем не менее, это единое целое, и в итоге вы отправляете одно задание для работы над ним. Задача - это единица детализации в dask, и Dask не будет разделена.

То, что вы хотели сделать, это разбить ваш фрейм данных на разделы. Вы можете сделать это самостоятельно (df.loc[..]), но есть также dask.dataframe специально для такого рода манипуляций: например, замена существующих pandas.read_csv на dask.dataframe.read_csv.

...