Python · Avançado · Inglês · Técnico
GIL
Global Interpreter Lock: trava do CPython que deixa só uma thread executar bytecode Python por vez. Simplifica o gerenciamento de memória, mas limita o paralelismo das threads em cálculos.
Onde usar
Aparece quando threads não aceleram um cálculo pesado. Para I/O o GIL é liberado durante a espera; para CPU use multiprocessing ou, em builds recentes, o modo sem GIL.
Em código
import sys
# intervalo de troca de thread
print(sys.getswitchinterval()) # 0.005Exemplos
Threads won't help here because of the GIL.
Threads não ajudam aqui por causa do GIL.
The GIL is released during I/O, so threads still work for downloads.
O GIL é liberado durante o I/O, então threads ainda funcionam para downloads.
Cuidado
O GIL não deixa seu código seguro contra condições de corrida: operações compostas como contador += 1 ainda precisam de lock.
Sinônimos
Global Interpreter Lock, trava global do interpretador
Origem
Sigla de Global Interpreter Lock.