Нужно ли инициализировать клиент при локальном использовании Dask? - PullRequest
0 голосов
/ 25 апреля 2020

Я прошел учебники по Dask, и они всегда начинаются с инициализации клиента:

from dask.distributed import Client

client = Client(n_workers=4)

Меня больше всего интересует использование функции read_csv Dask для параллельного чтения DataFrames на моем ноутбуке.

import dask.dataframe as dd
df = dd.read_csv('trainset.csv').compute()

Несмотря на установку n_workers = 4, Dask использует все ядра при чтении CSV. То же самое, если инициализировать клиента или нет. Нужно ли даже инициализировать клиент, когда я использую Dask локально и только для чтения файлов? Это неявно инициализируется с помощью Dask?

1 Ответ

1 голос
/ 27 апреля 2020

Планировщик по умолчанию Dask - это простой «многопоточный» планировщик, который не может работать на нескольких машинах. Однако, если вы создаете распределенный client, то вместо этого он становится значением по умолчанию - даже если это «локальный» клиент, работающий только на одном компьютере. Это связано с тем, что многопоточный планировщик появился раньше и уже был по умолчанию, а также потому, что для установки распределенной системы требуется много дополнительных зависимостей, таких как tornado. В некоторых ограниченных случаях многопоточный планировщик также может быть быстрее, потому что он проще, но распределенный имеет больше функций и средств диагностики, поэтому он обычно рекомендуется для всех целей.

Старые планировщики с одним компьютером: https://docs.dask.org/en/latest/setup/single-machine.html

Распределенный планировщик, который также можно использовать на одном компьютере: https://docs.dask.org/en/latest/setup/single-distributed.html

...