Низкая производительность параллельно с pool.map - PullRequest
0 голосов
/ 16 апреля 2020

Я выполняю параллельную задачу поиска соседей, ближайших к определенной точке, следуйте параллельной версии в Python:

from functools import partial
import numpy.matlib
import numpy as np
def distance_parall(x,n,i):
    dist = abs(np.matlib.repmat(x[i],1,n) - x)
    Neighb = np.argsort(dist[0],axis=-1, kind='mergesort', order=None) # order index
    return Neighb

if __name__ == '__main__':
    import multiprocessing
    pool = multiprocessing.Pool(processes=4)
    input_values = [i for i in range(n)]
    Neighb = pool.map(partial(distance_parall, x, len(x)), input_values)

Код дает правильные результаты! Я все еще не могу набрать скорость по отношению к последовательной процедуре. На самом деле l oop быстрее. Я знаю это, потому что, когда функция distance_parall не имеет выхода, происходит более высокая скорость. Однако, когда я ставлю вывод Neighb по какой-то странной причине, я теряю большую скорость. Не работает ли pool.map с выходами массива?

PS x - это одномерный массив и общая переменная между процессами. Neighb - это выход со всеми соседями для каждого элемента x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...