Отправка уникальных локальных переменных для каждого работника Dask в качестве аргумента функции - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь запустить неловко параллельный процесс с ноутбука Jupyter, размещенного на удаленном сервере Linux, с помощью Dask Distributed.Я использую LocalCluster() для настройки планировщика и рабочих.Процесс, который я пытаюсь запустить, представляет собой пользовательский метод класса, который оборачивает вызов subprocess.run(), который выполняет инструмент командной строки Windows, используя WINE.Чтобы помочь этим процессам работать полностью независимо друг от друга, метод класса принимает аргумент wine_prefix, который будет предшествовать пути к этому wine_prefix в вызове subprocess.run().

Я хотел бы выдвинуть локальную переменную с именем wine_prefix, уникальную для каждого работника, которую работник передал бы этому методу класса при вызове этого работника (т. Е. Каждый работник в кластере будет выполнять процесс, используяWINE на отдельном винном сервере).Я пытался использовать метод client.scatter() для разброса списка wine_prefixes (например, client.scatter(['~/.wine-0', '~/.wine-1', ...], broadcast=False)), но я не уверен, как передать аргумент wine_prefix методу класса, который я использую, используя только уникальныйwine_prefix на каждого работника.Если я создаю функцию dask.delayed, которую затем распространю по кластеру и укажу wine_prefix в качестве аргумента, она предоставит полный список префиксов.

...