multiprocessing
, который позволяет создавать и управлять процессами, а также обмениваться данными между ними.
Многопроцессность в Python – это техника параллельного выполнения кода, при которой программа запускает несколько отдельных процессов операционной системы, каждый из которых имеет собственное адресное пространство и собственный интерпретатор Python. Это позволяет эффективно использовать многоядерные процессоры и обходить ограничение GIL (Global Interpreter Lock), которое препятствует истинному параллелизму в многопоточных программах Python.
Основные характеристики и преимущества многопроцессности:
Основные модули Python для многопроцессности:
multiprocessing
: Основной модуль для создания и управления процессами. Предоставляет инструменты для создания процессов, организации обмена данными между ними (очереди, пайпы, разделяемая память) и синхронизации.concurrent.futures
: Предоставляет высокоуровневый интерфейс для асинхронного выполнения задач с использованием пула процессов (ProcessPoolExecutor
) или пула потоков (ThreadPoolExecutor
). Упрощает написание параллельного кода.Когда использовать многопроцессность:
Пример использования (упрощенный):
import multiprocessing
import time
def worker(num):
print(f"Process {num}: Starting")
time.sleep(2) # Имитация выполнения задачи
print(f"Process {num}: Finishing")
if __name__ == '__main__':
processes = []
for i in range(3):
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start()
for p in processes:
p.join() # Дождаться завершения всех процессов
print("All processes finished")
В этом примере создаются три отдельных процесса, каждый из которых выполняет функцию worker
. p.join()
обеспечивает, что основная программа будет ждать завершения всех дочерних процессов, прежде чем продолжить выполнение.