BT

Início Notícias Google Resolve Problemas de Concorrência do CPython com Grumpy

Google Resolve Problemas de Concorrência do CPython com Grumpy

Favoritos

O Google resolveu as limitações de concorrência introduzidas pelo Global Interpreter Lock existente no CPython criando um novo runtime de Phyton em Go.

O Google utiliza Python no front-end do Youtube e para executar APIs no CPython 2.7, a implementação de referência dos interpretadores desta linguagem. O código cresceu para milhões de LoC no decorrer dos anos, e geralmente os serviu bem depois de ajustes de performance no runtime. Mas eles se depararam com um problema recorrente: "É muito difícil executar tarefas simultâneas com boa performance no CPython", de acordo com o Google.

Depois de investigar várias soluções alternativas, o Google decidiu executar código Python no runtime do Go devido ao seu forte suporte para concorrência. O projeto Grumpy nasceu. Com o Grumpy é possível utilizar trans-compile código Python em Go que então é o compilado em código nativo baseado na plataforma de destino. O código intermediário Go é uma série de operações aplicadas em estruturas de dados representando objetos Python.

Devido ao uso de compilação, Grumpy reduz um pouco da liberdade de desenvolvimento e poder de uma linguagem interpretada. Mas o Google alega que essas perdas são compensadas por melhor otimização através de análises estáticas e a habilidade de usar pacotes Go através de simples importações.

Outro efeito da compilação estática é que Grumpy não suporta - e "provavelmente nunca irá suportar" - algumas funções dinâmicas disponíveis em CPython: exec, eval e compile. O suporte a essas funções iria requerer "agrupamento de programas Grumpy com compilações toolchain, o que seria pesado e impraticavelmente lento". Apesar de teoricamente possível, o time Grumpy diz que eles também não planejam suportar módulos de extensão C porque "o Grumpy tem uma API e estrutura de objetos diferente que CPython".

O Google está tentando tornar o Grumpy um substituto para o CPython 2.7. Alguns gostariam de ver Grumpy suportando Phyton 3.x no futuro. Respondendo a uma pergunta apoiando Python 3, Dylan Trotter, Staff Software Engineer no Youtube, disse "Nós temos uma ampla base de código Python 2.7, então é nisso que estamos focado. Eu definitivamente gostaria de apoiar o Python 3". Ele também disse em um outro tópico "Não há planos concretos para Python 3 em um futuro próximo, mas a longo termo eu definitivamente quero apoiar isso".

O Google abriu o código fonte do Grumpy no GitHub com a licença Apache 2.0, convidando os desenvolvedores a comentarem e contribuírem ao projeto. Um fórum também foi criado para esse propósito.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Comentários da comunidade

  • Erro de sintaxe...

    by Horácio Dias Baptista Neto /

    Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!

    "O Google resolveu as limitações de concorrência introduzidas pelo Global Interpreter Lock existente no CPython criando um novo runtime de Phyton em Go."

    Phython Nãoooooooooooooooooooooooooooo!

  • Re: Erro de sintaxe...

    by Washington Guimaraes /

    Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!

    Armaria!

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.