Локальная даска позволяет использовать планировщик процессов. Рабочие в распределенном dask используют ThreadPoolExecutor
для вычисления задач. Можно ли заменить ThreadPoolExecutor
на ProcessPoolExecutor
в распределенном dask? Спасибо.
Планировщик запущенных процессов в распределенном Dask
Ответы (1)
Распределенный планировщик позволяет работать с любым количеством процессов с помощью любого из вариантов развертывания. Каждый из них может иметь один или несколько потоков. Таким образом, у вас есть возможность выбирать любимое сочетание потоков и процессов по своему усмотрению.
Самое простое выражение этого - LocalCluster
(то же самое, что и Client()
по умолчанию):
cluster = LocalCluster(n_workers=W, threads_per_worker=T, processes=True)
делает W
рабочих с T
потоками каждый (что может быть 1).
В настоящее время реализация воркеров использует пул потоков внутри, и вы не можете поменять местами пул процессов вместо него.
person
mdurant
schedule
10.01.2019
Спасибо за Ваш ответ. Итак, при такой настройке мои задачи будут запускаться в пуле процессов, а не в пуле потоков?
- person Vladyslav Moisieienkov; 11.01.2019
Просто добавить. Идея состоит в том, чтобы использовать ProcessPoolExecutor вместо ThreadPoolExecutor.
- person Vladyslav Moisieienkov; 11.01.2019
Я говорю, вам не нужно беспокоиться об этом. Почему вы хотите изменить такую низкоуровневую деталь реализации?
- person mdurant; 11.01.2019
Это связано с stackoverflow.com/questions/54077457/. ProcessPool больше подходит. Но я уже понял, что легко заменить ThreadPool на ProcessPool.
- person Vladyslav Moisieienkov; 11.01.2019
ProcessPool больше подходит - правда, я бы не стал с этим связываться. У вас уже есть несколько процессов, это похоже на рецепт каскада.
- person mdurant; 11.01.2019
Я согласен с тем, что ProcessPool, как правило, не очень хорошее решение, но для моей цели он мне нужен. Могли бы вы просто добавить к своему ответу, что ThreadPool нельзя заменить на ProcessPool для выполнения задач, я приму ответ, и мы можем закрыть вопрос. Спасибо.
- person Vladyslav Moisieienkov; 15.01.2019