2017-02-14 8 views
11

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

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

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

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

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

ответ

-1

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

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

import multiprocessing 
num_core=multiprocessing.cpu_count() 
+0

Я не вижу, как этот ответ обращается на вопрос OP еще как запаздывающих работ. Вы скорректировали утверждение о задержанной функции дословно. – OfLettersAndNumbers