@MaxBat

Отличается ли мультипроцессинг от запуска нескольких программ?

Есть функция, которую мне нужно запустить отдельно друг от друга 20 раз. Чем будет отличатся решение, когда я 20 раз запущу один и тот же скрипт от решения, когда я запущу функцию из одного скрипта 20 раз каждый раз в новом процессе?

python
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Простотой коммуникации между скриптами, в т.ч. распределения задач между ними.

Во-втором случае у тебя есть готовое решение по распределению задач и сборке результатов. Но с ограничениями - например, под капотом используется pickle, так что передавать можно только ограниченный набор объектов.

В первом случае всё придётся писать самому, что и плюс, и минус.
Ответ написан
Комментировать
xenon
@xenon
Too drunk to fsck
А запуск просто 20 раз даст то, что вам нужно? Не требуется никакая коммуникация между процессами?
Тогда однозначно запускайте просто 20 копий программы, можно через parallel (стандартная утилита, есть наверное, везде) или просто своим шелл-скриптом. Будет быстрее и надежнее.

В пайтоне есть GIL и это сильно влияет на производительность в многопоточном режиме. Да и вообще, зачем усложнять? Один изолированный процесс, который делает какую-то простую функцию - это богоугодно. А если вы делаете монстра, который внутри себя запускает потоки/процессы то только в идеале вы приблизитесь к рекомендуемому варианту. А не в идеале - будете иметь проблемы с производительностью или какие-то сложноуловимые глюки и race conditions.

Многопоточность оправдана только если без нее никак, например, нужна коммуникация между процессами, работа с общими данными.

С другой стороны, если производительность вам не важна, а хочется "набить руку", потренироваться - в пайтоне это достаточно просто делается, почему бы и нет? Но это не самый оптимальный результат по скорости будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы