Содержание с кратким описанием:
Модуль многопроцессорной обработки данных предлагает как локальную, так и удаленную параллельную обработку данных, эффективно обходя глобальную блокировку интерпретатора и используя ядра процессора вместо потоков. Он работает как под Unix, так и под Windows.
В разделе рассмотрены функции модуля multiprocessing, при помощи которых можно узнать различные сведения о рабочих процессах, запущенных из программы. Примеры использования и применение.
Класс Process() модуля multiprocessing запускает вызываемый объект на исполнение, который будет выполняется в отдельном процессе/ядре процессора. Общий пример создания процессов с примерами использования основных методов.
Класс Pool() модуля multiprocessing создает объект, управляющий пулом рабочих процессов, в который могут быть отправлены задания. Пул рабочих процессов поддерживает асинхронное выполнение задач с тайм-аутами и обратными вызовами и имеет параллельную реализацию. Примеры и тесты методов.
Модуль multiprocessing определяет три вида очередей Queue, SimpleQueue и JoinableQueue - это очереди FIFO с несколькими производителями и несколькими потребителями, смоделированные на основе обычной многопоточной очереди FIFO queue.Queue модуля стандартной библиотеки queue.
Класс Pipe() модуля multiprocessing возвращает парный кортеж (conn1, conn2), состоящий из объектов Connection, представляющих концы одного канала. Представлены примеры создания канала Pipe и использования методов объекта Connection
В разделе рассмотрены следующие блокировки и примитивы синхронизации модуля multiprocessing: Lock(), RLock(), Barrier(), Semaphore(), BoundedSemaphore(), Condition(), Event(), а так же их сходство и различие с модулем threading.
Можно создавать общие объекты, используя общую память, которая может быть унаследована дочерними процессами. Такими объектами могут создавать классы multiprocessing.Value() и multiprocessing.Array()
Класс BaseManager() модуля multiprocessing.managers позволяет создать и запустить сервер диспетчера на одной машине и заставить клиентов использовать его с других машин, а так же пользоваться общими, зарегистрированные в нем ресурсами, классами и функциями.
Менеджеры предоставляют способ создания данных, которые могут совместно использоваться разными процессами. Объект-менеджер управляет серверным процессом, который управляет общими объектами. Другие процессы могут получить доступ к общим объектам с помощью прокси.
Модуль multiprocessing.shared_memory предоставляет класс SharedMemory для выделения и управления общей памятью, к которой обращается один или несколько процессов на многоядерной или симметричной многопроцессорной машине (SMP).
Прокси-объекты создаются менеджерами процесса multiprocessing.Manager(). Прокси-объект - это специальный объект, который ссылается на разделяемый объект, находящийся (обычно) в другом процессе. Новое в Python 3.14. Прокси-объекты для list и dict получили ранее отсутствовавшие методы
В модуле multiprocessing "из коробки" доступна некоторая поддержка логирования/ведения журнала процессов. Модуль logging не использует разделяемые блокировки процесса, поэтому, в зависимости от типа обработчика, сообщения от разных процессов могут смешиваться.
В разделе рассмотрены все ошибки и исключения, определяемые модулем multiprocessing. Это ProcessError, BufferTooShort, AuthenticationError, TimeoutError.