Bonjour,
Comme cela a déjà été expliqué ça dépendra de la RAM, cependant il y a des moyens de limiter le nombre de données dans une liste en lisant par partie dans le fichier.Au stade actuel de mes connaissances, la question qui suit n'a pas trop d'importance. Mais par curiosité, je me demande tout de même si trier les lignes d'un très gros fichier texte en passant par une liste est une méthode acceptable. Les listes peuvent t'elles contenir une grosse quantité de données ?
En gros le plan serait
Diviser les données en morceaux triables en mémoire
- Lisez une partie du fichier qui tient en mémoire.
- Triez cette partie en utilisant un algorithme de tri standard.
- Écrivez la partie triée dans un fichier temporaire.
- Répétez les étapes 1 à 3 jusqu'à ce que toute la donnée soit traitée.
Fusionner les morceaux triés
- Ouvrez tous les fichiers temporaires triés (les morceaux).
- Utilisez un algorithme de fusion pour combiner ces morceaux en un seul ensemble ordonné.
- Pendant la fusion, écrivez la sortie dans un nouveau fichier.
En utilisant le module heapq et sa méthode merge, ça se fait très efficacement pour le tri final.
Il y a pas mal de solutions avant d'utiliser le marteau pour écraser une mouche, le tout est de tester et vérifier que les temps sont raisonnables tout en considérant que raisonnables est suivi de critères précis pour le définir.
Partager