Folosind %lprun: identifică blocajele
Profilarea unei funcții îți permite să analizezi mai în detaliu codul sursă al acesteia și să identifici eventualele blocaje. Atunci când observi că anumite linii de cod consumă cea mai mare parte din timpul de rulare al funcției, este un semnal că ar putea fi utilă o abordare diferită, mai eficientă.
Să analizăm mai îndeaproape funcția 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
Încarcă pachetul line_profiler în sesiunea ta IPython. Apoi, folosește %lprun pentru a profila funcția convert_units() aplicată pe datele despre supereroi. Nu uita să folosești sintaxa specială pentru %lprun (va trebui să specifici flag-ul -f urmat de funcția pe care dorești să o profilezi).
Funcția convert_units(), lista heroes, array-ul hts și array-ul wts sunt deja încărcate în sesiunea ta. După ce ai terminat de scris codul, răspunde la următoarea întrebare:
Ce procent din timp este alocat liniei de cod cu list comprehension new_hts, raportat la timpul total petrecut în funcția convert_units()?
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Exercițiu interactiv practic
Transformă teoria în practică cu unul dintre exercițiile noastre interactive
Începe exercițiul