Inhaltsverzeichnis
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
Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
WeiterlesenTemas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Weiterlesen• https://docs.python.org/3/ El sitio principal de documentación de Python 3. Contiene tutoriales, referencias de bibliotecas, guías de configuración e instalación, así como Python cómo-tos • https://docs.
Weiterlesen