mutex — модуль mutex#

Модуль mutex предоставляет примитив взаимного исключения для защиты критических секций кода или общих данных от одновременного доступа со стороны обработчика прерываний и главного потока.

Захват и освобождение блокировки выполняются через контекстный менеджер (оператор with), который блокируется до тех пор, пока mutex не станет доступен. Также предоставляется неблокирующий метод Mutex.test().

Пример:

from mutex import Mutex

mtx = Mutex()

# Acquire for a critical section (blocks if already held).
with mtx:
    # ... protected code, e.g. shared buffer access ...
    pass

# Or try without blocking.
if mtx.test():
    try:
        # ... protected code ...
        pass
    finally:
        mtx.release()

class Mutex — объект mutex#

class mutex.Mutex#

Создаёт разблокированный объект mutex.

release() None#

Разблокирует mutex. Возбуждает mutex.MutexException, если mutex в данный момент не заблокирован.

test() bool#

Пытается захватить mutex неблокирующим способом. Возвращает True при успехе и False, если mutex уже заблокирован.

Чтобы захватить mutex блокирующим способом, используйте экземпляр как контекстный менеджер (оператор with). Mutex автоматически освобождается при выходе.

Исключения#

exception mutex.MutexException#

Подкласс OSError. Возбуждается методом Mutex.release, когда mutex уже разблокирован.