Pregunta

Por lo tanto, estoy jugando un poco con Stackless Python y una pregunta aparecido en mi cabeza, tal vez esto es "supuesto" o conocimiento "común", pero no pude encontrar lo que realmente escrito en ninguna parte en la sitio sin apilado .

¿Tiene Stackless Python tomar ventaja de las CPU de varios núcleos? En Python normal, usted tiene la GIL estar constantemente presente y para hacer (verdadero) el uso de múltiples núcleos que hay que utilizar varios procesos, esto es verdad para Stackless también?

¿Fue útil?

Solución

pitón Stackless hace no hacer uso de cualquier tipo de entorno multi-núcleo que puede correr.
Este es un error común acerca de Stackless, ya que permite al programador para tomar ventaja de la programación basada en hilo. Para muchas personas estos dos están estrechamente entrelazados, pero son, de hecho dos cosas separadas.

Internamente Stackless utiliza un planificador round-robin para programar cada tasklet (micro roscas), pero sin tasklet se puede ejecutar simultáneamente con otro. Esto significa que si uno está ocupado tasklet, los demás deben esperar hasta que tasklet cede el control. Por defecto, el planificador no se detendrá un tasklet y darle tiempo de procesador a otro. Es responsabilidad del tasklet para programar mismo de vuelta en el final de la cola de planificación utilizando Stackless.schedule (), o al terminar sus cálculos.

todos tasklets este modo se ejecutan de forma secuencial , incluso cuando núcleos multiplpe están disponibles.

La razón por la Stackless no tiene soporte multi-núcleo es porque esto hace que las discusiones mucho más fácil. Y esto es precisamente lo que sin pérdida de velocidad tiene que ver con:

desde el sitio web oficial sin apilado

  

Stackless Python es un mejorada   versión de la programación Python   idioma. Se permite a los programadores   cosechar los beneficios de hilo a base de   programación sin la actuación   y los problemas de la complejidad asociados   con hilos convencionales. los   microhilos que se suma a Stackless   Python es un barato y ligero   conveniencia que puede si se usa   adecuadamente, dar los siguientes beneficios:

     
      
  • Mejora de la estructura del programa.
  •   
  • código sea más legible.
  •   
  • El aumento de la productividad del programador.
  •   

Aquí hay un enlace a algo más de información sobre el acceso múltiple núcleos y sin pérdida de velocidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top