pytest и сравнительный анализ параллельных программ

#python #parallel-processing #benchmarking #pytest

#python #параллельная обработка #сравнительный анализ #pytest

Вопрос:

Я использую модуль py.test для тестирования двух версий моего алгоритма, и результаты, которые мне показывают, намного ниже, чем те, которые я получаю при ручном запуске программы. Первый вариант — это эталонный алгоритм, в то время как другой улучшает выполнение эталонного алгоритма путем распараллеливания. Для распараллеливания я использую multiprocessing.Process . Тест показывает время выполнения ~ 4 с для параллельной версии (по сравнению с ~ 90 сек для последовательной), что здорово. Однако, когда я запускаю параллельную версию вручную, это занимает более 4 секунд (я даже не успеваю завершить выполнение, мой компьютер перегружается (все ядра загружаются на 100% в htop), и я вынужден прервать выполнение. И да, я добавил if __name__ == '__main__' часть перед созданием процессов.

Я рассчитал время первого варианта с помощью time.time() и time.clock(), и оба они показывают около 100 секунд (что все еще выше, чем показывает pytest, но поскольку время выполнения зависит от начальной случайной настройки, это может быть понятно).

Я искал в документации, но не смог найти никаких объяснений, почему это может произойти. У вас есть какие-либо идеи? Является ли py.test хорошим способом тестирования параллельной программы, и есть ли у вас какие-либо другие предложения?