Sobre
Turmas
Projetos
Time
Materiais
Artigos
Aulas
PT
EN
Materiais
Materiais
· Backend
11. Concorrência em Python
Como fazer um código concorrênte em Python
17 min de leitura
→
Anterior
10. Sincronismo e Assíncronismo
Próximo
12. Segurança em APIs
→
Nesta página
11.1 Global Interpreter Lock (GIL)
O que é o GIL
Por que isso existe
O que isso muda na prática
O que o GIL não resolve
Um detalhe que evita conclusões absolutas
Nota sobre Python mais recente
Checklist rápido
Fontes
11.2 Threading
Quando threading ajuda em backend
Quando threading não é a melhor escolha
O principal risco: estado compartilhado
Exemplo curto em Python
Exemplo sem proteção
Exemplo com lock
Como threading aparece em APIs na prática
Fontes
11.3 Multiprocessing
Quando multiprocessing faz sentido
O custo: memória e comunicação
Um erro comum de iniciante
Exemplo
Checklist rápido
Fontes
11.4 Asyncio e event loop
O que é o event loop
O que significa `async` e `await`
O que asyncio não resolve
Exemplo
Um erro comum de iniciante
Checklist rápido
Fontes
11.5 Erros comuns em código concorrente
Condição de corrida ao usar estado compartilhado
Exemplo sem proteção
Exemplo com lock
Deadlock ao usar múltiplos locks
Exemplo didático
Misturar código bloqueante dentro de asyncio
Exemplo ruim (bloqueia o event loop)
Exemplo correto para simular espera (não bloqueia)
Achar que threads resolvem CPU pesado
Criar concorrência demais e transformar tudo em fila
Esquecer que processos não compartilham memória
Checklist rápido
Fontes