Python sin pila - Stackless Python

Python sin pila
Autor (es) original (es) Christian Tismer
Desarrollador (es) Anselm Kruis
Versión inicial 1998 ; Hace 23 años  ( 1998 )
Lanzamiento estable
3.7.5-slp, 3.6.9-slp, 2.7.17-slp / 22 de enero de 2020 ; Hace 15 meses  ( 2020-01-22 )
Versión de vista previa
3.8.0b3
Repositorio Edita esto en Wikidata
Escrito en C , Python
Sistema operativo Linux , Windows
Tipo Interprete
Licencia Licencia de Python Software Foundation
Sitio web http://www.stackless.com

Stackless Python , o Stackless , es un intérprete del lenguaje de programación Python , llamado así porque evita depender de la pila de llamadas C para su propia pila. En la práctica, Stackless Python usa la pila C, pero la pila se borra entre llamadas a funciones. La característica más prominente de Stackless es microhilos , que evitan gran parte de la sobrecarga asociada con habituales del sistema operativo hilos . Además de las funciones de Python, Stackless también agrega soporte para corrutinas , canales de comunicación y serialización de tareas .

Diseño

Con Stackless Python, un programa en ejecución se divide en microprocesos que son administrados por el intérprete del lenguaje en sí, no por el kernel del sistema operativo : el cambio de contexto y la programación de tareas se realizan únicamente en el intérprete (por lo tanto, también se consideran una forma de hilo verde ) . Microthreads gestiona la ejecución de diferentes subtareas en un programa en el mismo núcleo de CPU. Por lo tanto, son una alternativa a la programación asíncrona basada en eventos y también evitan la sobrecarga de usar subprocesos separados para programas de un solo núcleo (porque no es necesario cambiar de modo entre el modo de usuario y el modo de kernel, por lo que se puede reducir el uso de la CPU).

Si bien los microthreads facilitan la ejecución de subtareas en un solo núcleo, Stackless Python no elimina el bloqueo de intérprete global de CPython , ni utiliza múltiples subprocesos y / o procesos. Por lo tanto, solo permite la multitarea cooperativa en una CPU compartida y no el paralelismo (originalmente, la preferencia no estaba disponible, pero ahora está de alguna forma). Para usar múltiples núcleos de CPU, aún sería necesario construir un sistema de comunicación entre procesos sobre los procesos de Python sin pila.

Debido a la considerable cantidad de cambios en la fuente, Stackless Python no se puede instalar en una instalación de Python preexistente como una extensión o biblioteca . En cambio, es una distribución Python completa en sí misma. La mayoría de las características de Stackless también se han implementado en PyPy , un autoalojamiento Python intérprete y compilador JIT .

Usar

Aunque todo Stackless es una distribución separada, su funcionalidad de conmutación se ha empaquetado con éxito como una extensión de CPython llamada greenlet. Es utilizado por varias bibliotecas (por ejemplo, gevent) para proporcionar una solución de subprocesamiento ecológico para CPython. Desde entonces, Python ha recibido una solución nativa para hilos verdes: await / async.

Stackless se utiliza ampliamente en la implementación del juego online multijugador masivo Eve Online , así como en la plataforma de correo de IronPort .

Ver también

Referencias

enlaces externos