Назад к вопросам
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) или высокой изоляции.