Многопроцессорная обработка Python занимает гораздо больше времени, чем одиночная обработка

Я последовательно выполняю несколько больших вычислений для 3 разных массивов 2D. Массивы огромные, 25000x25000 каждый. Каждое вычисление занимает много времени, поэтому я решил запустить 3 из них параллельно на 3 процессорных ядрах на сервере. Я следую стандартному руководству по многопроцессорности и создаю 2 процесса и рабочую функцию. Два вычисления выполняются через два процесса, а третий выполняется локально без отдельного процесса. Я передаю огромные массивы в качестве аргументов таких процессов, как:

p1 = Process(target = Worker, args = (queue1, array1, ...)) # Some other params also going

p2 = Process(target = Worker, args = (queue2, array2, ...)) # Some other params also going

функция Worker отправляет обратно два пустых вектора (массив 1D) в список, добавленный в очередь, например:

queue.put([v1, v2])

Я не пользуюсьmultiprocessing.pool

но удивительно, я не получаю ускорение, это фактически работает в 3 раза медленнее. Проходит ли передача больших массивов времени? Я не могу понять, что происходит. Должен ли я использовать объекты общей памяти вместо передачи массивов?

Я буду благодарен, если кто-нибудь может помочь.

Спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос