Есть ли в dask эквивалент maxtasksperchild?

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

Мы переходим с многопроцессорной обработки Python, в которой есть полезная опция maxtasksperchild, которая закрывает рабочие процессы после определенного количества задач.

Есть ли что-то встроенное в dask, сопоставимое с maxtasksperchild?

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


person hdinh    schedule 09.07.2019    source источник
comment
Почему бы вам просто не запустить воркер с ограничением памяти и позволить ему перезапускаться самостоятельно после перегрузки? Здесь дополнительная информация об управлении памятью исполнителя.   -  person malbert    schedule 10.07.2019
comment
Ограничение памяти могло бы технически работать, если бы dask обрабатывал перезапись воркера между границами выполнения задачи. Но по нашему опыту, dask будет убивать воркера всякий раз, когда превышен лимит памяти, что неудобно, потому что задачу нужно будет перезапустить (и иногда неожиданно завершается сбой в зависимости от параметра повторных попыток).   -  person hdinh    schedule 10.07.2019
comment
Самый распространенный вариант использования, который у нас есть, - это то, что мы хотим, чтобы воркеры выполняли ровно одну задачу, а затем ее повторно использовали.   -  person hdinh    schedule 10.07.2019


Ответы (1)


Нет, в Даске такого эквивалента нет

person MRocklin    schedule 19.07.2019