Назад к вопросам
Junior
111
questionbank
Что такое мультипроцессинг?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Мультипроцессинг в Python — это способ распараллеливания выполнения задач путем создания и управления несколькими независимыми процессами операционной системы.
Ключевые особенности:
- Каждый процесс имеет собственное адресное пространство памяти.
- Обмен данными между процессами требует явных механизмов (очереди, пайпы, общая память).
- Позволяет обойти ограничение Global Interpreter Lock (GIL) в CPython, полноценно используя многоядерность процессоров.
Преимущества:
- Повышение производительности на многоядерных системах.
- Изоляция процессов: сбой одного процесса не влияет на другие.
Недостатки:
- Больший расход ресурсов (память, накладные расходы OС на создание и переключение процессов).
- Сложность обмена данными.
Используется в модуле multiprocessing:
import multiprocessing
import time
def worker(num):
"""Функция, выполняющаяся в отдельном процессе"""
print(f"Процесс {multiprocessing.current_process().name} запущен с аргументом {num}")
time.sleep(1)
print(f"Процесс {multiprocessing.current_process().name} завершен")
if __name__ == "__main__":
processes = []
for i in range(5):
# Создание нового процесса
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
# Запуск процесса
p.start()
for p in processes:
# Ожидание завершения процесса
p.join()
print("Все процессы завершены.")
Отличия от многопоточности (threading):
| Признак | Multiprocessing | Threading |
|---|---|---|
| Изоляция памяти | Да (отдельное адресное пр-во) | Нет (общая память) |
| Использование CPU | Позволяет использовать >1 ядро | Ограничено GIL (для CPU-bound) |
| Накладные расходы | Высокие | Низкие |
| Обмен данными | Явный | Простой (общая память) |
Применяется для задач, требующих интенсивных вычислений (CPU-bound) или высокой изоляции.