đ 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.txt
avec 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.Thread
pour lancer lâanalyse de chaque fichier avec la fonctionanalyser_fichier_texte(chemin)
. - Partage un dict
resultats
proté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.ThreadPoolExecutor
pour 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.