Я попытался найти функцию, которая сообщает мне, имеет ли текущий поток глобальную блокировку интерпретатора или нет.
Документация Python/C -API, похоже, не содержит такой функции.
Мое текущее решение состоит в том, чтобы просто получить блокировку, используя PyGILState_Ensure()
, прежде чем освободить ее, используя PyEval_SaveThread
, чтобы не пытаться снять блокировку, которая не была получена текущим потоком.
(кстати. что значит "выдает фатальную ошибку"?)
Предыстория этого вопроса :У меня есть многопоточное приложение, в которое встроен Python. Если поток закрывается без снятия блокировки (, что может произойти из-за сбоев ), другие потоки больше не могут работать. Таким образом, при очистке/закрытии потока я хотел бы проверить, удерживается ли блокировка этим потоком, и освободить его в этом случае.
Заранее спасибо за ответы!