BT

Google Resolve Problemas de Concorrência do CPython com Grumpy

| por Abel Avram Seguir 7 Seguidores , traduzido por Bárbara Niens Seguir 0 Seguidores em 24 jan 2017. Tempo estimado de leitura: 2 minutos |

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.

Dê sua opinião

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

Receber mensagens dessa discussão

Erro de sintaxe... by Horácio Dias Baptista Neto

"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

Armaria!

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

2 Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT