Leçon 8 / 10 — Chapitre 5: Itérateurs, générateurs et context managers
Créer un context manager avec une classe
Un context manager personnalisé est utile pour garantir qu'une action de nettoyage a toujours lieu à la sortie d'un bloc — pas seulement pour des fichiers, mais pour n'importe quelle ressource ou état temporaire.
class Chronometre:
def __enter__(self):
import time
self.debut = time.time()
return self
def __exit__(self, type_erreur, valeur_erreur, traceback):
import time
duree = time.time() - self.debut
print(f"Duree : {duree:.4f} secondes")
with Chronometre():
total = 0
for i in range(1000000):
total = total + i
Ce code affiche Duree : 0.0XXX secondes à la sortie du bloc with : __enter__ enregistre l'heure de départ, __exit__ calcule et affiche la durée écoulée — un chronométrage automatique, sans avoir à appeler time.time() manuellement avant et après, comme dans le décorateur chronometrer vu au chapitre précédent.
Cette classe fait un travail très proche du décorateur chronometrer (vu au chapitre précédent), mais s'applique à un bloc de code plutôt qu'à une fonction entière — les deux techniques répondent à des besoins légèrement différents.
À vous de jouer : créez une classe Chronometre avec __enter__ et __exit__, et utilisez-la avec with autour d'une boucle de calcul.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès