многопроцессорный пул python работает медленнее? - PullRequest
1 голос
/ 15 октября 2019

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

def pow(a):
    c = np.zeros(a.size)
    for i in range(a.size):
        c[i] = a[i] ** a[i]
    return c        

if __name__=='__main__':
    n = int(1e6)

    data = np.random.sample(n)
    pool = mp.Pool(processes=8)
    results = pool.map(pow, data)
    new_res = pow(data)

1 Ответ

1 голос
/ 15 октября 2019

Параллельные вычисления никогда не бывают бесплатными. Новые процессы должны быть созданы, и результаты должны быть направлены вокруг процессов. Циклы Python медленны по сравнению с циклами, написанными на C, так как вы можете использовать их в numpy. Параллельные вычисления помогают только для больших проблем, которые нельзя оптимизировать другим способом. Ваш пример очень прост, параллельная работа не ускорит вашу проблему по сравнению с:

a = np.random.sample(n)
c = a ** a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...