«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как разделить блокировки между процессами Python

Как разделить блокировки между процессами Python

Опубликовано 8 ноября 2024 г.
Просматривать:339

How to Share Locks Between Python Processes

Совместное использование блокировок между процессами Python

При попытке использовать блокировку между несколькими процессами вы можете столкнуться с ошибкой: «Блокировать объекты следует только распределяться между процессами посредством наследования."

Чтобы решить эту проблему, существует два основных подхода:

Использование Manager

Этот подход включает в себя создание объекта Manager и передачу Manager.Lock():

from multiprocessing import Manager
...
m = Manager()
l = m.Lock()

Однако использование Manager приводит к необходимости дополнительного процесса для размещения сервера Manager и связи через IPC.

Передача блокировки в пуле Создание

Альтернативный метод — передать обычный multiprocessing.Lock() во время создания пула с использованием ключевого слова инициализатора. аргумент:

def init(l):
    global lock
    lock = l

l = multiprocessing.Lock()
pool = multiprocessing.Pool(initializer=init, initargs=(l,))

Этот метод делает экземпляр блокировки глобальным для всех дочерних рабочих процессов. Обратите внимание, что этот подход устраняет необходимость в частичной функции.

Применяя один из этих методов, вы можете эффективно распределять блокировки между процессами Python, обеспечивая скоординированный доступ к общим ресурсам.

Заявление о выпуске Эта статья воспроизведена: 17291323333 Если есть какие -либо нарушения, пожалуйста, свяжитесь с учебным устройством[email protected], чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3