У меня есть большой объект (150 МБ), который мне нужно передать всем распределенным работникам, чтобы его можно было использовать в будущих задачах.Я испробовал несколько подходов:
Client.scatter(broadcast=True)
: для этого требовалась отправка всех данных с одного компьютера (где я запускаю клиент и планировщик), что создает узкое место в пропускной способности. Client.submit
, за которым следует Client.replicate
: эти работники используют общую файловую систему, поэтому вместо отправки данных я могу запланировать задачу, которая загружает данные, а затем реплицировать данные всем работникам.Похоже, что для распространения данных используется древовидная стратегия, которая работает быстрее, чем предыдущая опция.
Однако потенциально быстрее заставить каждого работника выполнять функцию загрузки данных локально, чемзагрузить данные на одного работника и сериализовать их от работника к работнику.Есть ли способ сделать это?Client.run
кажется частью того, что я хочу, но мне нужно вернуть будущее для загруженных данных, которые я могу передать другим задачам позже.