đŻ 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

