Блокировка — один из фундаментальных механизмов синхронизации в
threading. Зачастую блокировки используются для доступа к разделяемым ресурсам. Для каждого такого разделяемого ресурса нам нужно создать объект типа
Lock и, когда нам потребуется доступ к ресурсу, следует вызвать acquire, что бы взять контроль над блокировкой. В том случае когда нам потребуется освободить блокировку, то мы вызываем
release. Стоит учесть то, что блокировку стоит освобождать даже в случае возникновения ошибок. Для этого можно использовать try-finally. Также все это можно заменить через оператор with. Оператор with автоматически захватывает блокировку перед входом в блок, и освобождает её после выхода.
Интерактивный пример — тут. Ссылка документация — тут.
#threading
