Índice de contenido
30.5 corrutinas Las corrutinas se introdujeron en Python 2.5, pero todavía se malinterpretan en gran medida. Gran parte de la documentación introduce Coroutines diciendo que son similares a Generadores, sin embargo hay una diferencia fundamental entre Generadores y Corrutinas: • los generadores son productores de datos, • las corrutinas son consumidoras de datos. Es decir, las corrutinas consumen datos producidos por otra cosa; donde como un gene- erator produce una secuencia de valores que otra cosa puede procesar. La función send() se usa para enviar valores a una rutina. Estos elementos de datos son disponible dentro de la corrutina; que esperará a que se le suministren valores. Cuando se proporciona un valor, se puede desencadenar algún comportamiento. Así, cuando un coroutine consume un valor que activa algún comportamiento para ser procesado. Parte de la confusión entre generadores y corrutinas es que el rendimiento la palabra clave se reutiliza dentro de una rutina; se usa dentro de una corrutina para causar el coroutine para esperar hasta que se haya enviado un valor. A continuación, proporcionará este valor a la corrutina También es necesario preparar una Rutina usando next() o send(Ninguno) funciones Esto avanza el Coroutine a la llamada para ceder donde luego esperará hasta que se le envíe un valor. Una corrutina puede continuar para siempre a menos que se le envíe close(). Es posible recoger la corrutina que se está cerrando capturando la excepción GeneratorExit ción; luego puede desencadenar algún comportamiento de apagado si es necesario. La siguiente función grep() proporciona un ejemplo de rutina: Esta rutina esperará los datos de entrada; cuando los datos se envían a la rutina, entonces esos datos se asignarán a la variable de línea. A continuación, comprobará si el el patrón utilizado para inicializar la función coroutine está presente en la línea; si lo es imprimir la línea; luego hará un bucle y esperará a que se envíe el siguiente elemento de datos al corrutina Si mientras está esperando la corrutina está cerrada, entonces atrapará el Excepción GeneratorExit e imprime un mensaje adecuado. def grep(patrón): print(‘Buscando’, patrón) intentar: mientras que es cierto: línea = (rendimiento) si patrón en línea: imprimir (línea) excepto GeneratorExit: print(‘Saliendo de la Co-rutina’) 360 30 Iterables, Iteradores, Generadores y Corrutinas
popular post
El modelo AR de series temporales univariadas
Resumen: En esta entrada, descubrirá el modelo AR: El modelo autorregresivo.
Leer másEvaluación de modelos para pronosticar
Resumen: Al desarrollar modelos de aprendizaje automático, generalmente se comparan varios modelos durante la fase de construcción.
Leer másModelos para pronosticar
Resumen: El pronóstico, traducido groseramente como la tarea de predecir el futuro, ha estado presente en la sociedad humana durante siglos.
Leer más