preloader

1 января 1 г. | 2 чтение минут
Указатель содержания

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

comments powered by Disqus

popular post

Temas de Pregrado en Ciencias de la Computación Principiantes Guía de Python 3 Programación Juan caza

Прочитайте больше

Temas de Pregrado en Ciencias de la Computación Principiantes Guía de Python 3 Programación Juan caza

Прочитайте больше

gratis. Para la mayor parte del trabajo que hago en Python, la versión Community es más que adecuado y por lo tanto es la versión que puede descargar e instalar (nota con el Versión profesional, obtiene una prueba gratuita, pero deberá pagar la versión completa versión al final de la versión de prueba o vuelva a instalar la versión de la Comunidad en ese momento).

Прочитайте больше