Joblib Параллельные несколько процессоров медленнее, чем одиночные
Я только начал использовать модуль Joblib, и яЯ пытаюсь понять, как работает функция Parallel. Ниже приведен пример, когда распараллеливание приводит к увеличению времени выполнения, но я нене понимаю почему. Мое время работы на 1 процессор составило 51 секунду против 217 секунд на 2 процессор.
Я предполагал, что параллельное выполнение цикла скопирует списки a и b на каждый процессор. Затем отправьте item_n одному процессору и item_n + 1 другому процессору, выполните функцию и затем запишите результаты обратно в список (по порядку). Затем возьмите следующие 2 предмета и так далее. Я'Я явно что-то упустил.
Это плохой пример или использование joblib? Я просто структурировал код неправильно?
Вот пример:
import numpy as np
from matplotlib.path import Path
from joblib import Parallel, delayed
## Create pairs of points for line segments
a = zip(np.random.rand(5000,2),np.random.rand(5000,2))
b = zip(np.random.rand(300,2),np.random.rand(300,2))
## Check if one line segment contains another.
def check_paths(path, paths):
for other_path in paths:
res='no cross'
chck = Path(other_path)
if chck.contains_path(path)==1:
res= 'cross'
break
return res
res = Parallel(n_jobs=2) (delayed(check_paths) (Path(points), a) for points in b)