Я пытаюсь запустить неловко параллельный процесс с ноутбука 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
в качестве аргумента, она предоставит полный список префиксов.