Utilisation de %lprun : détection des goulots d'étranglement
Le profilage d'une fonction vous permet d'examiner en détail le code source de la fonction et éventuellement de détecter des goulots d'étranglement. Lorsque vous constatez que certaines lignes de code occupent la majeure partie du temps d'exécution de la fonction, cela indique qu'il pourrait être opportun de déployer une technique différente et plus efficace.
Examinons de plus près la fonction d'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
Veuillez charger le package line_profiler
dans votre session IPython. Ensuite, veuillez utiliser %lprun
pour profiler la fonction d'convert_units()
agissant sur les données relatives à vos super-héros. Veuillez vous rappeler d'utiliser la syntaxe spéciale pour travailler avec %lprun
(vous devrez fournir un indicateur -f
spécifiant la fonction que vous souhaitez profiler).
Les fonctions convert_units()
, heroes
list, hts
array et wts
array ont été chargées dans votre session. Une fois le codage terminé, veuillez répondre à la question suivante :
Quel pourcentage du temps est consacré à la ligne de code de compréhension de liste d'new_hts
s par rapport au temps total passé dans la fonction d'convert_units()
?
Cet exercice fait partie du cours
Écrire du code Python efficace
Exercice interactif pratique
Passez de la théorie à la pratique avec l’un de nos exercices interactifs
