import numpy as np
from joblib import Parallel, delayed
lst = [[0.0, 1, 2], [3, 4, 5], [6, 7, 8]]
arr = np.array(lst)
w, v = np.linalg.eigh(arr)
def proj_func(i):
return np.dot(v[:,i].reshape(-1, 1), v[:,i].reshape(1, -1))
proj = Parallel(n_jobs=-1)(delayed(proj_func)(i) for i in range(len(w)))
< /code>
Вместо списка, как вернуть генератор с использованием joblib.parallel () < /code>?import numpy as np
from joblib import Parallel, delayed
lst = [[0.0, 1, 2], [3, 4, 5], [6, 7, 8]]
arr = np.array(lst)
w, v = np.linalg.eigh(arr)
def proj_func(i):
yield np.dot(v[:,i].reshape(-1, 1), v[:,i].reshape(1, -1))
proj = Parallel(n_jobs=-1)(delayed(proj_func)(i) for i in range(len(w)))
< /code>
Но я получаю эту ошибку: < /p>
TypeError: can't pickle generator objects
< /code>
Я что -то упускаю? Как мне это исправить? Мой основной прирост здесь - уменьшить память, так как Proj
может стать очень большим, поэтому я бы просто хотел позвонить каждому генератору в списке по одному.
Я что -то упускаю? Как мне это исправить? Мой основной прирост здесь - уменьшить память, так как Proj [/code] может стать очень большим, поэтому я бы просто хотел позвонить каждому генератору в списке по одному.
Я использую тяжелый экземпляр ( ml.C5.24xlarge ) на AWS Sagemaker и я пытаемся распараллелить цикл.
results = Parallel(n_jobs=90, backend='multiprocessing', verbose=1)(delayed(process_data)(pair) for pair in data_list )
Есть ли простой способ отслеживать общий ход выполнения joblib.Parallel?
У меня есть длительное выполнение, состоящее из тысяч заданий, которые я хочу отслеживать и заносить в базу данных. Однако для этого каждый раз, когда Parallel завершает...
Возможно, этот вопрос связан с этим. У меня есть 4D-массив, и я хотел бы применить функцию к каждому 2D-срезу в первых двух измерениях. Я реализовал анализ как для dask, так и для joblib. joblib занимает всего 0,10 минуты, вариант dask — 8 минут....
Есть ли простой способ отслеживать общий прогресс в выполнении joblib.parallel? Однако, чтобы сделать это, когда параллельно завершает задачу, мне нужно, чтобы она выполнила обратный вызов, сообщаю, сколько осталось оставшихся заданий.
var items = Enumerable.Range(0, 200); Parallel.ForEach(элементы, элемент => Console.WriteLine(элемент)); Элементы в консоли располагаются в случайном порядке. Я не уверен, как перечисляет Parallel.ForEach, но похоже, что...