Что делает функция delayed() (при использовании с joblib в Python)

Я прочитал документацию, но я не понимаю, что подразумевается под:  The delayed function is a simple trick to be able to create a tuple (function, args, kwargs) with a function-call syntax.

Я использую его для перебора списка, в котором я хочу работать (allImages) следующим образом:

def joblib_loop():
    Parallel(n_jobs=8)(delayed(getHog)(i) for i in allImages)

Это возвращает мои функции HOG, как я хочу (и с увеличением скорости, используя все мои 8 ядер), но я просто не уверен, что он на самом деле делает.

Знание My Python в лучшем случае в порядке, и очень возможно, что я пропустил что-то основное. Любые указатели в правильном направлении были бы наиболее оценены

Ответ 1

Из ссылки https://wiki.python.org/moin/ParallelProcessing Параллельный объект создает многопроцессорный пул, который разворачивает интерпретатор Python в нескольких процессах для выполнения каждого из элементов списка. Задержанная функция - это простой трюк, позволяющий создать кортеж (function, args, kwargs) с синтаксисом функции-вызова.

Еще одна вещь, которую я хотел бы предложить, - вместо явного определения нескольких ядер, которые мы можем обобщить следующим образом:

import multiprocessing
num_core=multiprocessing.cpu_count()