Ваш вопрос довольно широкий, и большинство ответов можно найти в документации по модулю multiprocessing
.
Здесь следует несколько краткий ответ.
- Многопроцессорные прослушиватели и клиенты позволяют выбирать именованные каналы в качестве среды передачи.
Из документации :
Модуль multiprocessing.sharedctypes предоставляет функции для выделения объектов ctypes из общей памяти, которые могут наследоваться дочерними процессами.
Вы не можете использовать функции multiprocessing.sharedctypes
в процессах, которые не имеют отношения родитель / потомок.
- Менеджеры и Слушатели и клиенты работают через процессы на разных хостах или у которых нет родительских / дочерних отношений. Семейство сокетов
AF_INET
может использоваться на разных хостах. Тем не менее, я бы рекомендовал против этого. Скорее используйте сетевые сокеты или какой-то другой механизм абстракции.
- Отличия и характеристики хорошо иллюстрируются в документации .
Python multiprocessing
модуль изначально был реализован через threading
API. К тому времени его возможности выросли, но основная идея осталась прежней. Модуль multiprocessing
предназначен для работы с семействами процессов Python. Для любого другого использования лучше использовать модуль subprocess
.
Для распределения задач и заданий по нескольким хостам существуют гораздо лучшие решения, абстрагирующие инфраструктуру низкого уровня. Вы можете взглянуть на проекты Python, такие как Celery или Luigi или более сложные инфраструктуры, такие как Apache Mesos .