Как прервать распараллеливание в joblib после нахождения нужного значения? - PullRequest
0 голосов
/ 25 марта 2020

Предположим, у меня есть такая функция:

def f(angle):
    if angle % 5==0:
        return angle 

    return None 

Затем я использую joblib.Parallel и joblib.delayed следующим образом:

from joblib import Parallel, delayed
results = Parallel(n_jobs=4)(delayed(f)(angle) for angle in range(360))

Это дает мне все значения, которые Я хочу, и они будут отличаться от «None» только тогда, когда угол делится на 5. Затем я делаю следующее

for x in results:
   if x is not None:
       return x 

С этим я возвращаю первый результат, который не является None. Но что, если нам нужно выполнить некоторые сложные вычисления, которые занимают слишком много времени? Тогда мы бы хотели, чтобы это было закончено во время распараллеливания. Я не хочу грубой силой распараллеливать, чтобы найти значение, которое я хочу. Я хотел бы, если бы я мог получить это значение непосредственно во время распараллеливания, после чего распараллеливание останавливается и дает мне значение, которое я хочу. Как лучше всего выполнить sh, используя библиотеку joblib?

...