Вызовы подпрограмм Numpy из многопроцессорных задач выполняются очень медленно.Python

Программы на Python
Ответить
Anonymous
 Вызовы подпрограмм Numpy из многопроцессорных задач выполняются очень медленно.

Сообщение Anonymous »

Я вызываю numpy.linalg.inv из задачи многопроцессорной обработки, созданной из модуля многопроцессорной обработки Python. Я сравниваю подпрограмму Numpy со своей собственной обратной подпрограммой my_inv.
Я вижу, что подпрограмма Numpy значительно быстрее моей, когда обе выполняются последовательно (как и ожидалось).
Однако, когда я использую одни и те же подпрограммы в многопроцессорной задаче, подпрограмма Numpy работает примерно в 100 раз медленнее. И только с my_inv я вижу какое-то параллельное ускорение.
Буду рад любым объяснениям, даже очевидным.
from numpy import eye, inf
from numpy.linalg import norm, inv
from numpy.random import rand, seed

import time

import multiprocessing as mp

mp.set_start_method('fork',force=True)

def task(N):
S = eye(N)
# inv(S) # Very slow
my_inv(S) # okay

def process_serial(N,num_tasks):
for _ in range(num_tasks):
task(N,)

def process_parallel(N,num_tasks):
itlist = [(N,)]*num_tasks
with mp.Pool() as pool:
pool.starmap(task,itlist)
pool.close()
pool.join()

num_tasks = 1

Подробнее здесь: https://stackoverflow.com/questions/798 ... -very-slow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»