Я реализую два алгоритма, которые выполняются в многоагентной структуре, поэтому каждый агент должен запустить алгоритм. Первый алгоритм является последовательным, каждый агент должен ждать предыдущего, а второй - одновременно.Threads vd процессы в параллельных вычислениях
Я реализовал оба потока, а время работы более или менее одинаковое для обоих по сравнению с серийным корпусом (для последовательного ожидаемого, но не для одновременного). Я изменил код на использование процессов, и время для обоих алгоритмов было на 20 раз медленнее. Это нормально?
Редакция 1: Идея алгоритма заключается в том, что каждый агент запускает его одновременно, а затем возвращает параметры из алгоритма в основную программу для вычисления среднего значения. Это среднее значение используется для следующей итерации алгоритма и т. Д. Возвращение параметров, которые я делаю с многопроцессорной очередью, может быть проблемой медленного времени?
Для потоков, глобальная блокировка интерпретатора Python означает, что вы, вероятно, не получите лучшую производительность с несколькими потоками, чем с одним потоком. С процессами вы должны иметь возможность повысить производительность, если объем работы каждого подпроцесса достаточно велик, чтобы компенсировать затраты на создание и запуск нового процесса. Обратите внимание, что связь между процессами будет более дорогостоящей, чем связь между потоками, поэтому многопроцессорность будет работать лучше всего, когда объем связи между процессами будет минимизирован. –