Usare %lprun: individua i colli di bottiglia
Profilare una funzione ti permette di analizzarne il codice sorgente e individuare potenziali colli di bottiglia. Se alcune righe assorbono la maggior parte del tempo di esecuzione della funzione, potrebbe essere il caso di adottare una tecnica diversa e più efficiente.
Approfondiamo la funzione convert_units().
def convert_units(heroes, heights, weights):
new_hts = [ht * 0.39370 for ht in heights]
new_wts = [wt * 2.20462 for wt in weights]
hero_data = {}
for i,hero in enumerate(heroes):
hero_data[hero] = (new_hts[i], new_wts[i])
return hero_data
Carica il pacchetto line_profiler nella tua sessione IPython. Poi usa %lprun per profilare la funzione convert_units() applicata ai dati dei tuoi supereroi. Ricorda di usare la sintassi speciale per %lprun (devi fornire il flag -f specificando la funzione che vuoi profilare).
La funzione convert_units(), la lista heroes, l'array hts e l'array wts sono già caricati nella tua sessione. Dopo aver scritto il codice, rispondi alla seguente domanda:
Quale percentuale di tempo viene spesa sulla riga di comprensione di lista new_hts rispetto al tempo totale impiegato nella funzione convert_units()?
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Esercizio pratico interattivo
Passa dalla teoria alla pratica con uno dei nostri esercizi interattivi
Inizia esercizio