Если я нахожусь в ситуации, чтобы выяснить это, я попытался бы заменить блокировку оболочкой, которая выполняет подсчет (или распечатывает что-то, вызывает исключение и т. Д.), Когда происходит нежелательное поведение. Python хакерский, поэтому я могу просто создать функцию и переписать исходный threading.Lock
, чтобы выполнить работу. Это может потребовать некоторой тщательной реализации, например, перехватить все возможные пути для блокировки и разблокировки.
Однако вы должны быть осторожны, чтобы не использовать все возможные пути кода и, следовательно, никогда не знать, действительно ли вы удалили все "ошибки".