Desarrollador Python: pregunta de entrevista
¿Qué es el GIL de Python?
El GIL es un mutex de CPython que permite ejecutar bytecode Python a un solo hilo a la vez; los hilos ayudan con E/S, mientras el paralelismo de CPU suele requerir procesos o código nativo que lo libere.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
CPython protege el estado del intérprete y los contadores de referencias con un único lock global, así que dos hilos nunca ejecutan bytecode Python a la vez en el mismo proceso. El lock se libera durante llamadas al sistema bloqueantes y dentro de muchas extensiones C como NumPy, por eso los hilos siguen acelerando trabajo de red o de ficheros. Para código Python intensivo en CPU, el paralelismo viene de multiprocessing, una cola de tareas con workers separados o código nativo; las versiones recientes ofrecen un modo experimental sin GIL, pero la mayoría de despliegues aún lo usan.
Ejemplo
Un scraper web con 50 hilos termina mucho antes que con uno porque cada hilo espera en sockets mientras otros corren. Los mismos 50 hilos calculando hashes en Python puro no terminan antes que uno, así que el hashing pasa a un ProcessPoolExecutor y el tiempo cae aproximadamente con el número de núcleos.
Errores frecuentes
- Afirmar que los hilos son inútiles en Python e ignorar el caso de E/S.
- Creer que el GIL hace el código Python thread-safe, cuando las operaciones compuestas siguen teniendo carreras.
- Elegir multiprocessing para trabajo de E/S y pagar arranque de procesos y pickling para nada.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.