Explica el GIL y cómo acelerarías un trabajo CPU-bound en Python.
Respuesta
- GIL: un lock en CPython; solo un thread ejecuta código Python a la vez. Protege los contadores de referencias y el estado del intérprete.
- Se libera durante el I/O bloqueante y en muchas extensiones en C (NumPy, hashlib, zlib).
- Trabajo I/O-bound: los threads o
asyncio funcionan bien. - Opciones para CPU-bound:
ProcessPoolExecutor / multiprocessing; vectorizar con NumPy/pandas; mover el bucle crítico a Cython/Rust/C; build free-threaded (3.13+) donde las librerías lo soporten. - Trade-offs: arranque de procesos, coste de pickling, duplicación de memoria. Perfila primero (
cProfile, py-spy).
Practica esta pregunta en Repaso