CommencerCommencer gratuitement

L'utilisation de %lprun permet de résoudre le problème du goulot d'étranglement.

Dans l'exercice précédent, vous avez analysé la fonction convert_units() et constaté que la compréhension de la liste new_hts pouvait constituer un goulot d'étranglement potentiel. Avez-vous remarqué que la compréhension de la liste new_wts représentait également un pourcentage similaire du temps d'exécution ? Cela indique que vous pouvez créer les objets new_hts et new_wts à l'aide d'une technique différente.

Comme la taille et le poids de chaque héros sont stockés dans un tableau numpy, vous pouvez utiliser la diffusion de tableau plutôt que la compréhension de liste pour convertir les tailles et les poids. Cela a été mis en œuvre dans la fonction ci-dessous :

def convert_units_broadcast(heroes, heights, weights):


    # Array broadcasting instead of list comprehension

    new_hts = heights * 0.39370

    new_wts = weights * 2.20462


    hero_data = {}


    for i,hero in enumerate(heroes):

        hero_data[hero] = (new_hts[i], new_wts[i])



    return hero_data

Chargez le paquet line_profiler dans votre session IPython. Ensuite, utilisez %lprun pour établir le profil de la fonction convert_units_broadcast() agissant sur les données de vos super-héros. La fonction convert_units_broadcast(), la liste heroes, le tableau hts et le tableau wts ont été chargés dans votre session. Une fois le codage terminé, répondez à la question suivante :

Quel est le pourcentage de temps consacré à la ligne de code de diffusion du tableau new_hts par rapport au temps total consacré à la fonction convert_units_broadcast()?

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