Stackless Python - Stackless Python

Stackless Python
Autor (es) original (is) Christian Tismer
Desenvolvedor (s) Anselm Kruis
lançamento inicial 1998 ; 23 anos atrás  ( 1998 )
Versão estável
3.7.5-slp, 3.6.9-slp, 2.7.17-slp / 22 de janeiro de 2020 ; 15 meses atrás  ( 2020-01-22 )
Versão de visualização
3.8.0b3
Repositório Edite isso no Wikidata
Escrito em C , Python
Sistema operacional Linux , Windows
Modelo Intérprete
Licença Licença Python Software Foundation
Local na rede Internet http://www.stackless.com

Stackless Python , ou Stackless , é um interpretador da linguagem de programação Python , assim chamado porque evita depender da pilha de chamadas C para sua própria pilha. Na prática, Stackless Python usa a pilha C, mas a pilha é limpa entre as chamadas de função. A característica mais proeminente de Stackless é microroscas , que evitam grande parte da sobrecarga associada habituais do sistema operacional tópicos . Além dos recursos do Python, Stackless também adiciona suporte para corrotinas , canais de comunicação e serialização de tarefas .

Projeto

Com Stackless Python, um programa em execução é dividido em microencadeados que são gerenciados pelo próprio intérprete da linguagem, não pelo kernel do sistema operacional - a troca de contexto e o agendamento de tarefas são feitos puramente no intérprete (portanto, também são considerados uma forma de fio verde ) . Microthreads gerenciam a execução de diferentes subtarefas em um programa no mesmo núcleo da CPU. Portanto, eles são uma alternativa à programação assíncrona baseada em eventos e também evitam a sobrecarga de usar threads separados para programas de núcleo único (porque nenhuma alternância de modo entre o modo de usuário e o modo kernel precisa ser feita, então o uso da CPU pode ser reduzido).

Embora os microthreads tornem mais fácil lidar com a execução de subtarefas em um único núcleo, o Stackless Python não remove o Global Interpreter Lock do CPython , nem usa vários threads e / ou processos. Portanto, ele permite apenas multitarefa cooperativa em uma CPU compartilhada e não paralelismo (a preempção não estava originalmente disponível, mas agora está em alguma forma). Para usar vários núcleos de CPU, ainda seria necessário construir um sistema de comunicação entre processos no topo dos processos Stackless Python.

Devido ao número considerável de mudanças na fonte, Stackless Python não pode ser instalado em uma instalação Python preexistente como uma extensão ou biblioteca . Em vez disso, é uma distribuição Python completa em si. A maioria dos recursos do Stackless também foi implementada no PyPy , um interpretador Python auto-hospedado e compilador JIT .

Usar

Embora todo o Stackless seja uma distribuição separada, sua funcionalidade de comutação foi empacotada com sucesso como uma extensão CPython chamada greenlet. É usado por uma série de bibliotecas (por exemplo, gevent) para fornecer uma solução green threading para CPython. Desde então, o Python recebeu uma solução nativa para threads verdes: await / async.

Stackless é amplamente utilizado na implementação do jogo online multiplayer massivo Eve Online , bem como na plataforma de correio da IronPort .

Veja também

Referências

links externos