đ Traitement de fichiers en parallĂšle
đŻ Objectif pĂ©dagogiqueâ
- Lancer des tĂąches dâI/O disque en parallĂšle avec des threads.
đ ĂnoncĂ©â
Vous allez créer un mini-outil qui analyse plusieurs fichiers texte et, en bonus, lit un gros CSV par morceaux.
Partie 1 â Mise en placeâ
- Ăcrivez
creer_fichiers_test(dossier="test_fichiers")qui crée 10 fichiers.txtavec quelques lignes de texte. - Vérifiez que les fichiers sont bien créés.
- Ăcrivez
analyser_fichier_texte(chemin)qui retourne un dictionnaire avec les champs suivants:{'taille': bytes, 'lignes': n, 'caracteres': c}.
Partie 2 â Analyse sĂ©quentielleâ
Ăcrivez traiter_fichiers_sequentiel(dossier) qui:
- Parcourt tous les
.txt, appelleanalyser_fichier_texte. - Mesure le temps total.
Partie 3 â Analyse en parallĂšle avec threadsâ
- Ăcrivez
traiter_fichiers_threads(dossier)qui:- Utilise
threading.Threadpour lancer lâanalyse de chaque fichier avec la fonctionanalyser_fichier_texte(chemin). - Partage un dict
resultatsprotégé parthreading.Lock(écritures protégées). - Mesure le temps total.
- Utilise
- Comparez les temps avec la baseline séquentielle.
Partie 4 â Analyse avec ThreadPoolExecutorâ
- Ăcrivez
traiter_fichiers_threadpool(dossier, max_workers=2)qui:- Utilise
concurrent.futures.ThreadPoolExecutorpour gĂ©rer un pool de threads. - Soumet les tĂąches dâanalyse et collecte les rĂ©sultats.
- Utilise
- Comparez les temps avec les versions précédentes.