У меня есть небольшой кластер машин, на котором я выполняю операции с уменьшением карты.Головной узел имеет блокнот Jupyter, планировщик dask и работающий dask-работник.Я хотел бы передать некоторые задачи всем машинам в моем ноутбуке jupyter и вернуть все результаты обратно в головной узел.Однако я не хочу ждать, пока они все закончат.Таким образом, из моей записной книжки Jupyter я хотел бы передать обработку фьючерса, в частности, местному работнику , который будет записывать результаты на диск по мере их возвращения.Вот некоторый код для иллюстрации:
import dask.distributed
# the local machine has a dask-scheduler and a dask-worker.
client = dask.distributed.Client("localhost:8786")
def write_result(i, result):
with open(str(i), "wb") as f:
f.write(str(result))
def write_results(futures):
for i, future in enumerate(dask.distributed.as_completed(futures)):
write_results(i, future)
def inc(x):
return x+1
futures = client.map(inc, range(100))
#this should happen ONLY ON THE LOCAL WORKER
client.submit(write_results, futures)
Я мог бы просто иметь несколько клиентов dask, но это похоже на хак.Есть ли способ указать местного работника?