его не заменить на lock или другие примитивы в зависимости от ситуации?
В случае мультипроцессинга Lock и дргуие "примитивы" синхронизации реализованы через контексты. Контексты используются для реализации синхронизации и передачи данных между процессами. То что ты видишь как multiprocessing.Lock это просто удобный фасад. Менеджер это просто "специальный" объект, который позволяет создавать прокси-объекты для разных типов данных для того чтобы шарить их между процессами.
Тебя возможно ввело в заблуждение что в мультипроцессинге есть multiprocessing.Lock и в менеджере есть Lock ?
Lock в менеджере это враппер над threading.Lock, не то же самое что и multiprocessing.Lock. Технически если у тебя используется threading.Lock для синхронизации между потоками и тебе зачем-то его понадобилось использовать не только для синхронизации потоков в одном процессе, но и для синхронизации протоков между разными процессами, следует использовать Lock из менеджера. Мне слабо представляется хотя бы один реалистичный сценарий где это могло бы понадобиться.
Обсуждают сегодня