Python sem GIL (No-GIL)

Artigo Técnico | Python

Introdução

O Python tradicional utiliza o GIL (Global Interpreter Lock), que impede múltiplas threads de executarem código Python em paralelo.

Com a proposta da PEP 703, surgiu uma versão experimental do Python que permite execução paralela real com threads, removendo essa limitação.

Avisos importantes

  • O Python sem GIL ainda é experimental
  • Nem todas as bibliotecas são compatíveis
  • Extensões em C podem não funcionar corretamente
  • Não recomendado para produção (ainda)

Pré-requisitos

Certifique-se de ter as dependências básicas instaladas:

sudo apt install build-essential git libssl-dev zlib1g-dev \
libncurses5-dev libreadline-dev libsqlite3-dev libffi-dev

(os nomes podem variar dependendo da distro — no Gentoo/FreeBSD você já deve saber ajustar)


1) Baixando o código-fonte do Python

git clone https://github.com/python/cpython.git
cd cpython

2) Selecionando a versão com suporte ao no-GIL

git checkout 3.13

3) Compilando o Python sem GIL

./configure --disable-gil
make -j$(nproc)
sudo make install

4) Entendendo os binários gerados

Após a instalação, você terá dois binários principais:

  • python3.13 → versão normal (com GIL)
  • python3.13t → versão sem GIL (no-GIL)

O sufixo t significa threaded (sem GIL).

5) Executando o Python sem GIL

/usr/local/bin/python3.13t --version

Ou diretamente:

python3.13t

6) Verificando se o GIL está desativado

Dentro do interpretador:

import sys
print(sys._is_gil_enabled())

Resultado esperado:

False

7) Criando um alias (opcional)

Para facilitar o uso no terminal:

alias python-nogil="/usr/local/bin/python3.13t"

Assim você pode executar:

python-nogil

Fechando

O Python sem GIL representa um passo importante para melhorar desempenho em aplicações concorrentes. Apesar de ainda ser experimental, já é possível testar e explorar seus benefícios.

  • Teste benchmarks com threads
  • Valide compatibilidade de bibliotecas
  • Evite uso em produção por enquanto