CommencerCommencer gratuitement

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

Afficher le cours

Exercice interactif pratique

Passez de la théorie à la pratique avec l’un de nos exercices interactifs

Commencer l’exercice