QMutex

class PyQt4.QtCore.QMutex([mode=QtCore.QMutex.NonRecursive])

позволяет блокировать ресурс.

mode может быть:

  • QMutex.NonRecursive - nоток может за­просить блокировку только единожды; после снятия блокировка может быть запрошена снова

  • QMutex.Recursive - поток может заnросить блокировку несколько раз; чтобы nолностью снять блокировку, следует вызвать метод unlock() соответствующее количество раз

lock()

устанавливает блокировку. Если ресурс уже заблокирован, то работа текущего потока приостанавливается до снятия блокировки.

tryLock([time])

устанавливает блокировку. Если блокировка успешно установлена, возвращает True, иначе если заблокирован другим потоком - False.

Parameters

time (int) – время ожидания в миллисекундах. можно задать отрицательное значение, тогда метод будет аналогичен lock()

unlock()

снимает блокировку

class PyQt4.QtCore.QMutexLocker(mutex)

принимает QMutex объект, блокирует его, и при вызове деструктора данного объекта, разблокирует. Также можно использовать как контекстный менеджер внутри with … as …: