Ответ
Класс multiprocessing.Process в Python используется для создания и управления дочерними процессами. Его основная цель — выполнение CPU-bound задач (интенсивных вычислений) в параллельном режиме, что позволяет обойти ограничение Global Interpreter Lock (GIL) и эффективно использовать все ядра процессора.
В отличие от потоков (threading.Thread), которые выполняются в рамках одного процесса и разделяют одну память (и GIL), каждый Process имеет собственное адресное пространство и свой экземпляр интерпретатора Python.
Базовый пример использования:
import multiprocessing
import time
def worker(name):
"""Функция, которая будет выполняться в дочернем процессе."""
print(f'Процесс {name} запущен.')
time.sleep(2)
print(f'Процесс {name} завершен.')
if __name__ == '__main__':
# Создание объекта процесса
p = multiprocessing.Process(target=worker, args=('Worker-1',))
# Запуск процесса
p.start()
print('Основной процесс продолжает работу.')
# Ожидание завершения дочернего процесса
p.join()
print('Дочерний процесс завершился, основной процесс закончен.')
Ключевые особенности и правила:
if __name__ == '__main__':: Эта конструкция обязательна в Windows и рекомендуется во всех ОС. Она предотвращает рекурсивное создание дочерних процессов при импорте модуля.targetиargs: В конструкторProcessпередается целевая функция (target) и кортеж ее аргументов (args).start(): Метод запускает выполнение функции в новом процессе.join(): Метод блокирует выполнение основного процесса до тех пор, пока дочерний процесс не завершится. Это необходимо для синхронизации.- Межпроцессное взаимодействие (IPC): Поскольку процессы изолированы, для обмена данными между ними используются специальные механизмы, такие как
Queue,PipeилиManagerиз модуляmultiprocessing.