Ok, non riesco a vederti, ma so cosa provi, stai dubitando di me in questo momento, stai pensando
che i generatori siano inutili.
Continui a dire che sono veloci e performanti, ma non capisco davvero.
Questa tastiera LTH e questa successiva.
E onestamente, semplicemente non ha senso.
Lascia che ti convinca del loro vero potere.
Selezionerò tutti questi e li eliminerò, perché voglio tornare a un esempio che abbiamo
usato prima.
Ricordi quando abbiamo creato la performance del decoratore?
Nella nostra sezione del decoratore.
Usando questo decoratore di prestazioni, riduciamolo al minimo, devo.
Funziona per noi, una funzione di lunga data che utilizza un intervallo.
E un'altra funzione di lunga data che utilizza un intervallo e quindi lo converte in un elenco.
Quindi ricorda, uno crea un elenco e poi da quell'elenco che ha creato una memoria sui nostri computer, andrà uno
per uno e moltiplicherà le cose per cinque rispetto a un intervallo, che è un generatore integrato
in Python che semplicemente uno per uno, tieni zero e memoria e moltiplica per cinque.
Tieni uno in memoria, ma moltiplica per cinque e continua, continua, continua e rimuove dalla memoria
tutti i vecchi numeri.
Quale pensi che sarà la performance di entrambi?
Proviamolo.
E a proposito, ti collegherò all'esercizio in modo che tu possa provarlo tu stesso e giocare.
Quindi facciamo a lungo.
E poi molto tempo per.
Fai le tue scommesse, preparati.
Scopriamolo.
La prima funzione a lungo ha richiesto uno virgola sei secondi.
E poi la seconda funzione ha impiegato quasi il doppio del tempo.
È una bella differenza, vero?
Ma subito, possiamo dirlo.
Va bene, questo è decisamente più performante di, beh, molto tempo per eseguirlo di nuovo solo per testare le nostre
ipotesi, assicurarci che sia corretto.
Questa volta ci sono voluti uno virgola otto e poi due virgola sei.
Va bene.
Questo è molto più veloce, anche se entrambi fanno la stessa cosa.
E pensa a questo.
Se fossi Google, pensa a quanti dati ha Google se lavori in Google e immagina se questo
fosse ancora più grande, se fosse ancora più lungo, se puoi eseguire un'attività molto più velocemente.
Usa molte meno risorse di quelle che ha Google.
Voglio dire, ti adorerebbero perché con i generatori sono stati in grado di non tenere le cose in
memoria, non dover consumare tutte quelle risorse e invece elaborare i dati in modo efficiente.
E guarda qui.
Sono stato in grado di risolvere questa funzione in 16 secondi.
Voglio dire, sì, ci è voluto molto tempo, ma molto tempo per farlo davvero.
Ha ucciso il processo.
Se questo era un server di Google, quello è un server che è appena morto ed è completamente inutile.
Quindi i generatori sono davvero, davvero utili quando si calcolano grandi insiemi di dati, in particolare se stiamo usando lunghi cicli
in cui non vogliamo davvero archiviare quella memoria e non abbiamo bisogno di calcolare tutto allo stesso tempo,
forse uno per uno.
E molte librerie in Python sotto il cofano usano generatori invece di usare elenchi perché sono molto
più veloci.
Quindi ricorda di creare un generatore.
Tutto quello che dobbiamo fare è creare una funzione generatore che vogliamo.
E poi qui dentro, possiamo semplicemente eseguire il loop su un certo valore.
Che forse lo diamo a un intervallo o possiamo semplicemente accettarlo come parametro e tutto ciò che dobbiamo
fare è semplicemente produrre quel risultato.
E facciamo quello che vogliamo in questo blocco, ma assicurati di mettere in pausa la funzione in modo che possa essere utilizzata in
seguito.
Come funzione generatore, quindi possiamo fare qualcosa come un ciclo for e dire elemento nella funzione gen e dargli una
sorta di parametro.