IniziaInizia gratis

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

Visualizza il corso

Esercizio pratico interattivo

Passa dalla teoria alla pratica con uno dei nostri esercizi interattivi

Inizia esercizio