Я хотел бы взять существующую функцию (например, из scikit-learn, в частности, функцию «предсказать») и применить ее с использованием нескольких ядер к некоторому набору данных.Параллельный декоратор параллельного кластера ipython и функции более высокого порядка
Мой первый наивный подход:
def parallel_predict(classifier):
@dview.parallel(block=True)
def predict(matrix):
return classifier.predict(matrix)
return predict
Не работает (несколько ядер не начинают вращаться вверх). Есть ли способ сделать эту работу?
Или какой-либо способ иметь функции «без повторения», переданные функции @dview.parallel
?
Вы пытаетесь сопоставить один вызов для прогнозирования()? Простые методы параллелизации - все это в основном способы обработать несколько вызовов функции, чтобы они могли работать на разных ядрах или на разных машинах. Поворот последовательной функции в параллельную, как правило, более активно. –
Да, я пытаюсь распараллелить один вызов для прогнозирования(). @ dview.parallel украшает функцию, так что при запуске на iterable она разбивает итерацию вверх и отправляет каждый из них другому клиенту: вот что я хочу сделать здесь. К сожалению, кажется, что аргументы ВСЕ Итерабельны. –
Можете ли вы обернуть вызов функции в лямбда, который выдает только итерируемые аргументы, которые вы хотите распараллелить? –