¿Hay funciones integradas que bloqueen en la E / S que no permitan que se ejecuten otros subprocesos?

Me encontré con esta statement interesante en la sección “Advertencias” de la documentación para el módulo de thread hoy:

No todas las funciones integradas que pueden bloquear la espera de E / S permiten que se ejecuten otros subprocesos. (Los más populares ( time.sleep() , file.read() , select.select() ) funcionan como se espera.)

Casi en cualquier otro lugar donde he visto temas de Python discutidos, siempre se ha asumido que todas las funciones incorporadas que hacen I / O liberarán el GIL, lo que significa que otros subprocesos pueden ejecutarse mientras la función se bloquea. Por lo que yo sabía, el único riesgo de que una operación de E / S bloquee otros subprocesos sería si se hiciera a una extensión C con errores que descuidó la liberación de GIL.

Entonces, ¿es verdad esta afirmación de los documentos del thread ? ¿Existen operaciones de E / S de locking integradas que no liberen la GIL? No he podido encontrar ningún ejemplo específico hasta ahora.

Aquí está la palabra oficial de Guido van Rossum en este:

No en mis sueños más salvajes podría haber esperado que esa afirmación aún estuviera en los documentos 20 años después. 🙂 Por favor, deshacerse de él.

Así que la respuesta a mi pregunta es “No”.