Está bien, no puedo verte, pero sé lo que estás sintiendo, estás dudando de mí ahora mismo, estás pensando
que los generadores son inútiles.
Sigues diciendo que son rápidos y eficaces, pero realmente no lo entiendo.
Este teclado LTH y este siguiente.
Y honestamente, simplemente no tiene sentido.
Déjame convencerte de su verdadero poder.
Voy a seleccionar todos estos y simplemente eliminarlos, porque quiero volver a un ejemplo que hemos
usado antes.
¿Recuerdas cuando creamos la actuación del decorador?
En nuestra sección de decoradores.
Usando este decorador de rendimiento, minimicémoslo, tengo que hacerlo.
Funciones para nosotros, una función de mucho tiempo que usa un rango.
Y otra función de larga data que usa un rango y luego lo convierte en una lista.
Así que recuerde, uno crea una lista y luego a partir de esa lista que creó una memoria en nuestras computadoras, irá una
por una y multiplicará las cosas por cinco versus un rango, que es un generador que viene integrado en
Python que solo va a uno por uno, mantenga el cero y la memoria y multiplique por cinco.
Mantenga uno en la memoria, pero multiplíquelo por cinco y continúa, continúa, continúa y elimina de la
memoria cualquier número antiguo.
¿Cuál crees que será el desempeño de ambos?
Probémoslo.
Y, por cierto, lo vincularé al ejercicio para que pueda probarlo usted mismo y jugar.
Así que hagamos mucho tiempo.
Y luego mucho tiempo para.
Haga sus apuestas, prepárese.
Vamos a averiguar.
La primera función en mucho tiempo tomó un punto seis segundos.
Y luego la segunda función tomó casi el doble de tiempo.
Esa es una gran diferencia, ¿verdad?
Pero de inmediato, podemos decirlo.
Muy bien, esto definitivamente es más eficaz que, bueno, mucho tiempo para ejecutarlo nuevamente solo para probar nuestras suposiciones,
asegurarnos de que sea correcto.
Esta vez, tomó uno coma ocho y luego dos coma seis.
Está bien.
Esto es mucho más rápido, aunque ambos hacen lo mismo.
Y piensa en esto.
Si fueras Google, piensa en cuántos datos tiene Google si estás trabajando en Google e imagina si esto
fuera aún más grande, si fuera aún más largo, si puedes realizar una tarea mucho más rápido.
Utiliza muchos menos recursos de los que tiene Google.
Quiero decir, te amarían porque con los generadores no podían guardar cosas en la memoria, no tener
que consumir todos esos recursos y, en cambio, procesar datos de manera eficiente.
Y mira aquí.
Pude resolver esta función en 16 segundos.
Quiero decir, sí, eso tomó mucho tiempo, pero mucho tiempo para poder hacerlo.
Mató el proceso.
Si se trataba de un servidor de Google, es un servidor que acaba de morir y es completamente inútil.
Entonces, los generadores son realmente útiles cuando se calculan grandes conjuntos de datos, particularmente si usamos ciclos largos donde
realmente no queremos almacenar esa memoria y no necesitamos calcular todo al mismo tiempo, tal vez uno
por uno. uno.
Y muchas bibliotecas en Python debajo del capó usan generadores en lugar de usar listas porque son mucho
más rápidos.
Así que recuerda crear un generador.
Todo lo que tenemos que hacer es crear una función de generador que queramos.
Y luego aquí, podemos simplemente recorrer algún valor.
Que tal vez lo demos a un rango o simplemente podamos aceptarlo como parámetro y todo lo que tenemos
que hacer es simplemente producir ese resultado.
Y hacemos lo que queramos en este bloque, pero asegúrate de pausar la función para que luego se pueda
usar.
Como una función generadora, podemos hacer algo como un bucle for y decir elemento en la función gen y darle algún
tipo de parámetro.