O GIL do Python: o que ele impede e o que não impede
Pergunta
O que é o GIL (Global Interpreter Lock) do CPython, e como ele afeta código com múltiplas threads?
Resposta esperada
O GIL é um mutex do CPython que permite que apenas uma thread execute bytecode Python por vez. Consequência: threads NÃO dão paralelismo real de CPU — um trabalho puramente CPU-bound não fica mais rápido com threads (às vezes fica pior pela troca de contexto). Mas o GIL é liberado durante I/O (rede, disco) e dentro de extensões C que o soltam (NumPy), então threads AINDA ajudam para carga I/O-bound. Pra paralelismo de CPU real, usa-se `multiprocessing` (processos separados, cada um com seu interpretador) ou libs nativas. Implementações sem GIL existem (esforço recente no CPython, além de PyPy/Jython com histórias diferentes).
Por que perguntam isso
Pergunta pleno de Python. Resposta fraca: 'Python não tem threads'. Resposta certa distingue CPU-bound de I/O-bound e sabe que o GIL é liberado no I/O.