Pergunta de entrevista para Desenvolvedor Python

Você pode explicar o que é o GIL e o que ele realmente protege?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

O Global Interpreter Lock é um mutex do CPython que deixa apenas uma thread executar bytecode Python por vez, protegendo o estado do interpretador, como contagens de referência e estruturas internas de objetos. Isso significa que threads não dão ganho paralelo para código Python CPU bound, mas ainda ajudam em I/O, porque o lock é liberado durante chamadas bloqueantes e durante trabalho em extensões C.

Por que os entrevistadores perguntam isso

É a pergunta clássica de filtro para medir profundidade em Python. Os entrevistadores querem ouvir que você entende por que threading ajuda em trabalho I/O bound e não em CPU bound, e que você sabe recorrer a multiprocessing ou extensões nativas quando precisa de paralelismo de verdade. Respostas vagas como Python não faz threads indicam alguém que decorou um slogan em vez de raciocinar sobre o runtime.

Como estruturar sua resposta

  • Defina o GIL em uma frase.
  • Diga o que ele protege e por que o CPython o tem.
  • Contraste trabalho I/O bound e CPU bound.
  • Cite as saídas de emergência que você realmente usa.

Exemplo de resposta

Exemplo falado, em primeira pessoa

O GIL é um lock único no CPython que garante que só uma thread roda bytecode Python em qualquer momento. Ele existe porque a contagem de referências não é thread safe, e um lock por objeto seria mais lento para o caso single threaded, onde a maior parte do código vive. Na prática, isso significa que threads são ótimas para esperar e inúteis para calcular. Num pipeline de dados em que trabalhei, tínhamos uma etapa puxando cerca de oitocentas URLs, e mover isso de um loop serial para um thread pool derrubou de uns nove minutos para menos de um, porque cada worker passa a vida bloqueado num socket e libera o lock enquanto espera. A etapa de parsing ao lado não ganhou nada, então empurramos aquilo para um process pool. Numpy e outras extensões C também soltam o lock dentro de chamadas nativas longas, e é por isso que matemática pesada de arrays pode parecer paralela mesmo em threads. Quando alguém me diz que Python não faz concorrência, eu costumo perguntar de qual tipo ele está falando.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Então como o multiprocessing contorna isso?
  • O que acontece com o GIL quando uma extensão C roda?
  • Você já olhou a build free-threaded?

Mais perguntas para Desenvolvedor Python

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot