Как указать, какой клиент для задачи задачи? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть небольшой кластер машин, на котором я выполняю операции с уменьшением карты.Головной узел имеет блокнот 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, но это похоже на хак.Есть ли способ указать местного работника?

...