Em Python eles já discutem a proposta de remover o GIL e obter melhor desempenho

Logotipo Python

Python é uma linguagem de programação de alto nível.

Recentemente foi divulgada a notícia de que o O Python Project Steering Committee anunciou seu desejo de aprovar o Proposta de extensão da linguagem Python «PEP-0703″, tornando o bloqueio do interpretador global opcional no CPython e que basicamente define a incorporação do modo de compilação do CPython sem o Global Interpreter Lock (GIL).

PEP-0703 define parar de usar GIL por padrão, mas adicione a opção de compilação “–sin-gil” para desativá-la. Como vail Espera-se que o novo modo resolva o problema com paralelização de operações em sistemas multi-core, causada pelo fato de o bloqueio global não permitir o acesso paralelo a objetos compartilhados de diferentes threads.

Menciona-se que a longo prazo (após 5 anos), o interpretador está planejado para ser alterado por padrão para apenas no modo global sem bloqueio, ao mesmo tempo em que elimina o suporte para compilação com GIL.

Obrigado a todos por responderem à pesquisa sobre a proposta não-GIL. É claro que o sentimento geral é positivo, tanto para a ideia geral quanto para o PEP 703 em particular. O Conselho de Administração também é amplamente positivo em ambos. Pretendemos aceitar o PEP 703, embora ainda estejamos acertando os detalhes da aceitação.

Como fizemos algumas vezes no passado, queremos comunicar nossa intenção de aceitar o PEP junto com nosso pensamento atual sobre os detalhes relacionados à aceitação.

Além disso, Menciona-se que as mudanças que estão previstas serão realizadas em três etapas, que são de curto, médio e longo prazo. Já que na primeira etapa, desabilitar o GIL por padrão é impraticável devido à sobrecarga associada às alterações no coletor de lixo, no sistema de gerenciamento de memória e nas primitivas para organizar os bloqueios. Por exemplo, devido ao uso de contagem de referência para isolamento de encadeamento, há uma queda de desempenho para scripts de encadeamento único (no conjunto de testes pyperformance em 10%). Ao mesmo tempo, pode ser necessário desabilitar o GIL na computação científica, para a qual a falta de paralelização é um problema mais sério do que a velocidade linear de execução do código.

Na segunda etapa, basicamente será aguardada a confirmação. e que haja apoio suficiente da comunidade para que o uso de "não-GIL é viável" e certifique-se de que a compilação sem GIL seja suportada, mas não padrão.

Na última etapa, no-GIL já será o valor padrão e quaisquer vestígios de GIL serão removidos (sem quebrar desnecessariamente a compatibilidade com versões anteriores).

É observado que o trabalho de afastamento do GIL será feito com muito cuidado para não repetir o erro o que aconteceu ao promover Python 3: Uma compilação não GIL precisará garantir a compatibilidade com versões mais antigas do Python, e quaisquer alterações de código de terceiros necessárias para funcionar em compilações não GIL também devem funcionar em compilações GIL.

Não há planos de renumerar as versões para Python 4 para compilações não GIL, pois elas manterão a compatibilidade com ABI.

Ao longo do processo, nós (os principais desenvolvedores, não apenas o SC) precisaremos reavaliar o progresso e os cronogramas sugeridos. Não queremos que isso se torne outra luta de compatibilidade com versões anteriores de dez anos e queremos ser capazes de cancelar o PEP 703 e encontrar outra solução se parecer problemático, por isso precisamos verificar regularmente se o trabalho continuado vale a pena.

Esperamos que isso forneça alguma clareza sobre o futuro do PEP enquanto trabalhamos nos detalhes exatos da aceitação. O SC trabalhará para finalizar a aceitação nas próximas semanas.

Antes da transição completa para compilações não GIL, planejamos obter suporte total da comunidade para essas compilações, bem como fornecer APIs C adicionais e APIs Python para permitir multithreading seguro no código existente.

Finalmente, como já mencionado, espera-se que a transição para o terceiro estágio ocorra em pelo menos 5 anos e a data provável para o PEP-0703 é o lançamento do Python 3.13, previsto para o próximo outono.

Se você interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.