Fermer

février 20, 2025

Blogs perficient / blogs / perficient / Python Optimisation: Améliorer les performances du code

Blogs perficient / blogs / perficient / Python Optimisation: Améliorer les performances du code


🎯 Introduction

Python est un langage de programmation incroyablement puissant et facile à utiliser. Cependant, il peut être lent sinon optimisé correctement! 😱 Ce guide vous apprendra comment turbuler votre code, le rendant plus rapide, plus maigre et plus efficace. Bouclez-vous et plongeons dans certains hacks d’optimisation épique! 💡🔥

Pour en savoir plus sur les bases de Python, consultez notre guide pour le débutant de la programmation Python.

🏎️ 1. Choisir les bonnes structures de données pour de meilleures performances

Choisir la bonne structure de données, c’est comme choisir le bon outil pour un travail – faites-le mal et vous frapperez un clou avec un tournevis! 🚧

🏗️ 1.1 listes vs tuples: Optimisez votre stockage de données

  • Utilisez des tuples au lieu des listes Lorsque les éléments ne changent pas (données immuables). Les tuples ont des frais généraux plus bas et sont rapides! ⚡️
# List (mutable)
my_list = [1, 2, 3]
# Tuple (immutable, faster)
my_tuple = (1, 2, 3)

🛠️ 1.2 Utiliser des ensembles et des dictionnaires pour des recherches rapides

  • Recherche dans une liste c’est comme chercher une chaussette perdue dans une pièce en désordre 🧦. D’autre part, Recherche dans un ensemble ou un dictionnaire c’est comme googler quelque chose! 🚀
# Slow list lookup (O(n))
numbers = [1, 2, 3, 4, 5]
print(3 in numbers)  # Yawn... Slow!

# Fast set lookup (O(1))
numbers_set = {1, 2, 3, 4, 5}
print(3 in numbers_set)  # Blink and you'll miss it! ⚡️

🚀 1.3 Utilisez des générateurs au lieu de listes pour l’efficacité de la mémoire

  • Pourquoi stocker des millions de valeurs en mémoire alors que vous pouvez les générer à la volée? 😎
# Generator (better memory usage)
def squared_numbers(n):
    for i in range(n):
        yield i * i
squares = squared_numbers(1000000)  # No memory explosion! 💥

🔄 2. Optimisations de boucle pour le code Python plus rapide

⛔ 2.1 Évitez le calcul répété dans les boucles pour améliorer les performances

# Inefficient
for i in range(10000):
    result = expensive_function()  # Ugh! Repeating this is a performance killer 😩
    process(result)

# Optimized
cached_result = expensive_function()  # Call it once and chill 😎
for i in range(10000):
    process(cached_result)

💡 2.2 Utilisez des compréhensions de la liste au lieu de boucles traditionnelles pour le code pythonique

  • Pourquoi écrire des boucles ennuyeuses alors que vous pouvez être pythonique? 🐍
# Traditional loop (meh...)
squares = []
for i in range(10):
    squares.append(i * i)

# Optimized list comprehension (so sleek! 😍)
squares = [i * i for i in range(10)]

🎭 3. Techniques d’optimisation des chaînes

🚀 3.1 Utilisez join () au lieu de la concaténation des cordes pour de meilleures performances

# Inefficient (Creates too many temporary strings 🤯)
words = ["Hello", "world", "Python"]
sentence = ""
for word in words:
    sentence += word + " "

# Optimized (Effortless and FAST 💨)
sentence = " ".join(words)

🏆 3.2 Utilisez des cordes F pour la mise en forme des chaînes dans Python (Python 3.6+)

name = "Alice"
age = 25

# Old formatting (Ew 🤢)
print("My name is {} and I am {} years old.".format(name, age))

# Optimized f-string (Sleek & stylish 😎)
print(f"My name is {name} and I am {age} years old.")

⏳ 4.1 Utilisez du temps pour mesurer le temps d’exécution

import timeit
print(timeit.timeit("sum(range(1000))", number=10000))  # How fast is your code? 🚀

🧐 4.2 Utiliser le CPROFILE pour un profilage de performances détaillé

import cProfile
cProfile.run('my_function()')  # Find bottlenecks like a pro! 🔍

Pour en savoir plus sur le profilage, consultez notre guide des outils de profilage Python.

🧠 5. Techniques d’optimisation de la mémoire

🔍 5.1 Utiliser sys.getSizeOf () pour vérifier l’utilisation de la mémoire

import sys
my_list = [1, 2, 3, 4, 5]
print(sys.getsizeof(my_list))  # How big is that object? 🤔

🗑️ 5.2 Utilisez Del et GC.Collect () pour gérer la mémoire

import gc
large_object = [i for i in range(1000000)]
del large_object  # Say bye-bye to memory hog! 👋
gc.collect()  # Cleanup crew 🧹

⚡ 6. Traitement parallèle et multithreading

🏭 6.1 Utiliser le multiprocessement pour les tâches liées au CPU

from multiprocessing import Pool

def square(n):
    return n * n

with Pool(4) as p:  # Use 4 CPU cores 🏎️
    results = p.map(square, range(100))

🌐 6.2 Utiliser le filetage pour les tâches liées aux E / S

import threading

def print_numbers():
    for i in range(10):
        print(i)

thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()

Pour en savoir plus sur le traitement parallèle, consultez notre introduction à Python Multithreading.

🎉 Conclusion

Félicitations! 🎊 Vous avez débloqué le plein potentiel de Python en apprenant ces astuces d’optimisation des tueurs. Allez maintenant et écrivez un code Python en fast-fast, économe en mémoire et propre. 🚀🐍

Vous avez des hacks d’optimisation préférés? Déposez-les dans les commentaires! 💬🔥

Pour des informations plus détaillées sur l’optimisation de Python, consultez ces ressources:






Source link