2011-06-30 26 views
5

Las rutinas son un gran paradigma para facilitar la programación concurrente. Y la mayoría de las veces, las tareas simultáneas son fácilmente paralelables. En el lenguaje Go, es fácil usar goroutines para realizar tareas paralelas. ¿Hay alguna manera de hacer lo mismo en Python, p. usar corutinas para crear procesos y sincronizarlos?Programación paralela con coroutines en Python

Respuesta

3

Sí, Python tiene soporte para corutinas en bibliotecas y mediante generadores: consulte la biblioteca Greenlet, por ejemplo. Además, existe una derivada llamada Stackless Python que tiene soporte incorporado para varias características de programación simultáneas, como microthreads y canales.

Tenga en cuenta que en el CPython predeterminado, el bloqueo de intérprete global solo permitirá la ejecución de un subproceso al mismo tiempo, lo que puede ser un problema.

2

Si desea utilizar el intérprete de Python estándar, la biblioteca de Greenlet es el camino a seguir.

En cuanto a GIL, no debería ser un problema para corutinas. Podría considerar el modelo de corletina de greenlet como múltiples 'hilos' ligeros de espacio de usuario que se ejecutan dentro de un hilo del kernel. Entonces, desde el punto de vista de GIL y OS, sigue siendo de un solo hilo.