GIL не усыпляет и не пробуждает потоки. GIL - это блокировка, используемая системными потоками интерпретатора, гарантирующая, что два или более потока не будут выполняться одновременно. Поток интерпретатора вызывает
cv_wait на GIL с таймаутом в 5 миллисекунд. Если GIL не будет освобождён в течении 5 мс, поток установит переменную gil_drop_request и вызовет cv_wait ещё раз. Поток владеющий GIL периодически проверяет состояние переменной gil_drop_request и освобождает GIL, если она установлена. Так же поток освобождает GIL при любых операция ввода\вывода.