Событие python: многопроцессорность
В чем разница между multiprocessing.Event
и multiprocessing.managers.SyncManager.Event
. Когда я буду использовать каждый? Почему существуют два разных объекта?
Тот же вопрос для других подобных объектов, существующих в multiprocessing
, а также в Manager
(Lock
и т.д.)
Ответы
Ответ 1
К сожалению, только данный ответ не очень корректен, а другие не были предоставлены.
Я просмотрел его самостоятельно и обнаружил, что multiprocessing.Event
можно использовать для синхронизации между процессами, это совершенно нормально.
Event
и другие объекты из multiprocessing.Manager
существуют, чтобы синхронизировать вещи между процессами, которые выполняются на разных машинах через сокеты под капотом. Они также могут использоваться для синхронизации на одной машине, но менее эффективны для этого, чем просто использовать объекты синхронизации из multiprocessing.synchronize
(например, Event
и Lock
и другие)
Ответ 2
multiprocessing.Manager по существу является специализированным процессом, который будет создавать экземпляры примитивов синхронизации многопроцессорности по требованию в своем собственном адресном пространстве и позволяет вам обращаться к ним через прокси-серверы RPC. Примитивы ведут себя одинаково, и они обладают дополнительной гибкостью в доступе от удаленных хостов (используя TCP в удаленном случае).