Как контролируется параллелизм для задач в планировщике dask? - PullRequest
0 голосов
/ 04 марта 2020

У меня проблема с пониманием того, почему распределенный планировщик dask переводит все отправленные задачи в «прогресс», когда задач больше, чем рабочих.

Для кластера dask вы можете настроить количество процессов и количество потоков на процесс. Потоки на процесс контролируются concurrent.futures.ThreadPoolExecutor. Я предполагаю, что количество потоков, которые вы назначаете для процесса, равно количеству рабочих в ThreadPoolExecutor процесса.

Допустим, вы отправили 100 независимых задач и настроили 10 рабочих с 5 потоками в каждом: Тогда я бы предположил, что dasks назначает все 100 задач 10 рабочим. Затем threadpoolExecutor у каждого работника возьмет 5 из 10 своих задач и выполнит их в пуле потоков. Как только поток освобождается, исполнитель назначает следующую из 10 задач и т. Д.

В сущности, я бы предположил, что в любое время параллельно может выполняться максимум 50 задач.

То, что я вижу в сумерках GUI, - это то, что все 100 задач выполняются сразу после отправки. Я хотел бы видеть 50 из них в состоянии ожидания. Задания помечаются как «выполняемые», как только они назначены рабочим? Действительно ли задачи выполняются, если «в процессе»? (Я использую dask 1.1.4)

...