Stackless python e multicores?
-
22-08-2019 - |
Pergunta
Então, eu estou brincando ao redor com Stackless Python e uma pergunta surgiu em minha cabeça, talvez este é "assumida" ou conhecimento "comum", mas eu não poderia encontrá-lo realmente escrito em qualquer lugar na stackless local .
O Stackless Python aproveitam multicore CPUs? Em Python normal, você tem a GIL estar constantemente presente e make (true) uso de múltiplos núcleos que você precisa usar vários processos, isso é verdade para Stackless também?
Solução
Stackless python não fazer uso de qualquer tipo de ambiente multi-core que roda em.
Este é um equívoco comum sobre Stackless, pois permite que o programador tirar proveito de programação baseada em threads. Para muitas pessoas esses dois estão intimamente ligados, mas são, na verdade, duas coisas separadas.
Internamente Stackless usa um agendador de round-robin para agendar a cada tasklet (micro threads), mas não tasklet pode ser executado simultaneamente com um outro. Isto significa que se um tasklet está ocupado, os outros devem esperar até que o controle abandona tasklet. Por padrão, o programador não vai parar um tasklet e dar tempo de processador para outro. É responsabilidade do tasklet para agendar-se para trás no final da fila cronograma usando Stackless.schedule (), ou por terminar seus cálculos.
todas tasklets são assim executadas de forma sequencial , mesmo quando núcleos multiplpe estão disponíveis.
A razão pela qual Stackless não tem suporte multi-core é porque isso faz com que fios muito mais fácil. E este é apenas o que stackless é tudo sobre: ??
Stackless Python é uma reforçada versão da programação Python língua. Ele permite que os programadores colher os benefícios de rosca baseada em programação sem o desempenho e problemas de complexidade associado com tópicos convencionais. o microroscas que Stackless adiciona ao Python são um barato e leve conveniência que pode se usado corretamente, dá os seguintes benefícios:
- estrutura do programa melhorado.
- código mais legível.
- O aumento da produtividade do programador.
Aqui é um ligação para mais algumas informações sobre múltiplos núcleos e stackless.