introduzione
A Pycon 2021, il creatore del linguaggio Python, Sir Guido Van Rossum ha elaborato i suoi piani a lungo e breve termine su come rendere più veloci le versioni future di Python e prevede di farlo due volte più velocemente di quanto lo sia attualmente.. PyPy e CPython sono alcuni degli esempi esistenti che cercano di aumentare la velocità di esecuzione di Python, ma puoi anche farlo da solo se segui solo alcuni suggerimenti e trucchi su come migliorare le tue capacità di programmazione in modo da scrivere codice efficiente e non sprecare memoria o tempo della CPU.
Quindi, Perché scegliere Python??
Python è diventato uno dei linguaggi più accettati grazie al fatto che è facile da programmare e molto comodo da usare.. La velocità non è mai stata uno dei punti di forza di Python, ma non significa che devi sempre dare risultati inefficienti. In pitone si preferisce “Velocità di sviluppo” su di lui “Velocità di esecuzione“. Potrebbe non avere le prestazioni grezze di C o Java, ma rimarrai sorpreso dalla velocità con cui può essere eseguita un'applicazione Python correttamente ottimizzata. Questa velocità è sufficiente per alimentare varie applicazioni come l'analisi dei dati, strumenti di automazione, amministrazione e molti altri. Se segui alcuni suggerimenti e procedure di codifica standard, potresti quasi dimenticare che stavi scambiando le prestazioni dell'app per la produttività degli sviluppatori in primo luogo.
1. Profili di codice
In realtà, devi misurare il tuo codice al di fuori del tuo ambiente di test o UAT e direttamente nell'ambiente di produzione o live per scoprire esattamente perché o dove il tuo codice viene eseguito più lentamente. È qui che entra in gioco la profilazione ed è possibile utilizzare il software integrato di Python “CProfilo” modulo per ispezionare il codice alla ricerca di parti che potrebbero ridurre le prestazioni del codice generale.
Se hai bisogno di maggiore precisione, puoi utilizzare qualsiasi altro potente profiler che ti fornirà un'analisi approfondita, ma in molti casi, un semplice profiler può fare molto per rintracciare la funzione colpevole o la riga di codice che sta causando un collo di bottiglia. in esecuzione. Sarai in grado di identificare e testare con precisione con una linea di base per stabilire modelli o tempi di esecuzione anormali in vari scenari di distribuzione e puoi provare a indovinare prematuramente, ma questo potrebbe non portare a molto successo e, così, dovresti sempre usare un profiler per scomporre il tuo codice in modo efficiente.
2. Memorizzazione
La memorizzazione è un processo in cui lo stesso lavoro non viene ripetuto più e più volte, anche se si tratta di una funzione il cui valore è già stato calcolato in precedenza. Python ti dà la possibilità di una cache che ti darà la possibilità di ottenere immediatamente risultati da funzioni che sono state precedentemente calcolate. Queste speciali funzionalità Python sono note come decoratori e puoi usarle nel tuo codice per velocizzare il tuo codice..
Contributo :
import timeit def fib(n): se n < 2: return n else: ritorno fib(n-1) + frottola(n-2) t1 = timeit. Temporizzatore("frottola(40)", "da __main__ import fib") Stampa(t1.timeit(1))
Partenza: (sul mio computer locale)
47.392615799999994
Aggiungere le due righe di codice riportate di seguito:
from functools import lru_cache
@lru_cache(maxsize=100)
Partenza: (sul mio computer locale)
5.8000000000002494e-05
Scandaloso, Non è così? Questo è il potere di LRU_Cache nella libreria di funzioni. È possibile impostare un valore personalizzato per la cache LRU o impostarlo su «Nessuno’ per conservare tutto. Utilizzato per memorizzare valori che si ripetono frequentemente entro un periodo di tempo stabilito. Ad esempio, forse gli elementi recuperati più di recente durante l'ultimo 24 ore o un valore che verrà chiamato più volte nel corso della prossima 24 ore.
3. Usa Numpy per tutte le operazioni matematiche
NumPy è famoso per le sue operazioni matematiche basate su matrici o qualsiasi tipo di matrice, ma l'ingrediente segreto qui è che memorizza i dati numerici in modo più efficiente rispetto alle strutture dati integrate di Python. Il pacchetto ha molti sostituti per le tradizionali operazioni matematiche e, poiché utilizza le librerie C, è molto più veloce delle funzioni Python generali. NumPy gestisce in modo efficiente anche la tua memoria per strutture di dati molto grandi, come elenchi con un milione di elementi.
Numpy può ottimizzare e risparmiare fino a 75% più spazio delle normali liste Python. NumPy Array è l'unica cosa vicina agli array come in Java o C e facile da dichiarare e usare e, così, aderisce all'impegno iniziale di “Velocità di sviluppo”.
4. Usa sempre una libreria C quando possibile
Come hai già visto, l'uso di NumPy in combinazione con le librerie C e quanto potente può essere. Un concetto simile può essere applicato anche ad altre librerie e funzioni. Le librerie Python non sono efficienti come Cones e, così, se hai la possibilità o l'opportunità di utilizzare una libreria C, scegli sempre la libreria C. Sono più veloci ed efficienti delle rispettive librerie Python. Pitone Ctipi La libreria è un eccellente esempio compatibile con il runtime Python e sfrutta i vantaggi di C.
Puoi ottenere i migliori risultati riducendo il numero di viaggi da C a Python, poiché il passaggio di dati tra di loro è un'operazione costosa. Ad esempio, considera due scenari in cui stai passando un valore alla volta in un ciclo a C da Python, calcolandolo e restituendolo e, in un altro caso, passa una lista a C, eseguire il calcolo lì e inviare il risultato indietro. Scegli sempre la seconda opzione, poiché è molto più veloce ed efficiente in questo metodo.
5. Conosci la tua libreria e le sue funzioni
È molto facile includere tutte le librerie che conosci in un codice e non dovrai mai preoccuparti di importare nulla se non in pratica, questo è uno dei modi peggiori per programmare. È analogo a ordinare troppo cibo di quello che di solito riesci a gestire e, alla fine, ti sentirai stanco e difficile da finire. Sebbene Python possa essere un linguaggio potente, non è una scusa per accumulare tutte le librerie esistenti solo per evitare errori. Anziché, stai corrompendo il tuo codice se stai importando più delle librerie richieste nel tuo codice Python. Tieni sempre a mente quali funzioni ti servono e quali librerie sono aggiuntive. Rimuovi la riga o commentali per rimuovere quell'overhead e il tuo codice verrà eseguito più velocemente.
Note finali
Ora conosci alcuni suggerimenti e trucchi su come rendere il tuo codice più veloce ed efficiente usando alcune semplici tecniche e se hai altre domande, non esitate a contattarmi a LinkedIn o se ti piacciono i movimenti geometrici browniani e il mercato azionario, puoi vedere un altro dei miei articoli qui. Stai al sicuro e buona giornata.
I media mostrati in questo articolo su 5 suggerimenti e trucchi per velocizzare i tuoi programmi Python non sono di proprietà di DataPeaker e vengono utilizzati a discrezione dell'autore.