devterview_$ iniciar simulação

O GIL do Python: o que ele impede e o que não impede

MédioPlenoModelo de execução

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.

#gil#threads#multiprocessing#concorrencia
publicidade

Perguntas de acompanhamento

Relacionadas