Site icon Blog ARC Optimizer

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
Quitter la version mobile