Игнорировать долго выполняемые задачи в распределённом Dask - PullRequest
1 голос
/ 20 мая 2019

В в этом посте обсуждается, что уже запущенные задачи нельзя отменить в Dask (ограничение языка).

Но что, если я просто хочу пропустить эти задачи?

start_computing_time = time.time()

for future in task_pool:
    if condition:
       do_something_long(future.result()) 
    else:       
       future.cancel()

total_computing_time = time.time() - start_computing_time

В моем приложении время выполнения является критическим.Как только условие остановки выполнено, я просто хочу пропустить выполнение задач, так как меня больше не интересуют эти результаты.Насколько мне известно, future.cancel() просто отменит еще не запущенные фьючерсы.

Но есть ли способ выполнить их для выполнения задач?

Заранее спасибо!

1 Ответ

1 голос
/ 23 мая 2019

Похоже, что итератор as_completed может решить вашу проблему.Вы можете подождать с набором фьючерсов и обновить вашу систему по мере их поступления.Тогда у вас будет достаточно информации (или истекло время ожидания), вы просто перейдете и удалите запущенные фьючерсы.

...