1. Learn
  2. /
  3. Cursuri
  4. /
  5. Scriere eficientă a codului Python

Connected

exercițiu

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()?

Instrucțiuni

50 XP

Răspunsuri posibile