Подтвердить что ты не робот

В чем разница между многопроцессорностью и подпроцессом?

Моя работа должна использовать параллельные методы, и я новый пользователь python. Поэтому мне интересно, можете ли вы поделиться некоторыми материалами о модулях python multiprocessing и subprocess. В чем разница между этими двумя?

4b9b3361

Ответ 1

Модуль subprocess позволяет запускать и управлять другими программами. Все, что вы можете запустить с командной строки на компьютере, можно запустить и контролировать с помощью этого модуля. Используйте это, чтобы интегрировать внешние программы в свой код Python.

Модуль multiprocessing позволяет разделить задачи, написанные на python, на несколько процессов, чтобы повысить производительность. Он предоставляет API, очень похожий на модуль threading; он предоставляет методы для обмена данными между процессами, которые он создает, и упрощает задачу управления несколькими процессами для запуска кода Python. Другими словами, multiprocessing позволяет вам использовать несколько процессов для ускорения выполнения ваших задач путем параллельного выполнения кода.

Ответ 2

Если вы хотите вызвать внешнюю программу (особенно, не написанную на Python), используйте subprocess.

Если вы хотите вызвать функцию Python в подпроцессе, используйте multiprocessing.

(Если программа написана на Python, но также является импортируемой, то я попытаюсь вызвать ее функции, используя multiprocessing, а не вызывать ее извне через subprocess.)

Ответ 3

Subprocess генерирует новые процессы, но помимо stdin/stdout и любых других API, которые могут реализовать другие программы, у вас нет средств для общения с ними. Его основная цель - запустить процессы, которые полностью отделены от вашей собственной программы.

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