python multithreading concurrency multicore python-stackless

python - ¿Pitón y multinúcleos sin adornos?



multithreading concurrency (1)

Por lo tanto, estoy jugando con Stackless Python y una pregunta apareció en mi cabeza, tal vez esto es conocimiento "asumido" o "común", pero no pude encontrarlo escrito en ningún lugar en el sitio sin apilamiento .

¿ Aprovecha Stackless Python las CPU multinúcleo? En Python normal, usted tiene el GIL constantemente presente y para hacer (verdadero) uso de múltiples núcleos que necesita para usar varios procesos, ¿es esto cierto también para Stackless ?


Stackless python no utiliza ningún tipo de entorno multi-núcleo en el que se ejecuta.
Este es un concepto erróneo común sobre Stackless, ya que permite que el programador aproveche la programación basada en subprocesos. Para muchas personas, estas dos están estrechamente entrelazadas, pero son, de hecho, dos cosas separadas.

Internamente, Stackless utiliza un programador round-robin para programar cada tasklet (microhilos), pero no se puede ejecutar ningún tasklet simultáneamente con otro. Esto significa que si un tasklet está ocupado, los otros deben esperar hasta que ese tasklet renuncie al control. Por defecto, el planificador no detendrá un tasklet y dará tiempo de procesador a otro. Es responsabilidad del tasklet programarse al final de la cola de programación utilizando Stackless.schedule () o finalizando sus cálculos.

todos los tasklets se ejecutan de manera secuencial , incluso cuando hay núcleos multiplés disponibles.

La razón por la cual Stackless no tiene soporte multi-core es porque esto hace que los hilos sean mucho más fáciles. Y esto es de lo que se trata sin apilamiento:

del sitio web oficial sin apilamiento

Stackless Python es una versión mejorada del lenguaje de programación Python. Permite a los programadores cosechar los beneficios de la programación basada en subprocesos sin los problemas de rendimiento y complejidad asociados con los subprocesos convencionales. Los microthreads que Stackless agrega a Python son una conveniencia económica y liviana que, si se usa adecuadamente, brinda los siguientes beneficios:

  • Estructura de programa mejorada.
  • Código más legible
  • Mayor productividad del programador

Aquí hay un enlace a más información sobre múltiples núcleos y sin apilamiento.