Maison > développement back-end > Tutoriel Python > Comment puis-je traiter efficacement des fichiers volumineux en Python sans les charger entièrement en mémoire ?

Comment puis-je traiter efficacement des fichiers volumineux en Python sans les charger entièrement en mémoire ?

Susan Sarandon
Libérer: 2024-12-16 19:33:14
original
543 Les gens l'ont consulté

How Can I Efficiently Process Large Files in Python Without Loading Them Entirely into Memory?

Méthode paresseuse pour lire de gros fichiers en Python : traitement par morceaux

La lecture de fichiers volumineux en Python peut être difficile, surtout s'ils dépassent la capacité de votre ordinateur mémoire disponible. Pour atténuer ce problème, les méthodes paresseuses offrent une solution en lisant le fichier pièce par pièce, en traitant chaque partie et en stockant les résultats séparément.

Méthode 1 : Utiliser un générateur basé sur le rendement

Une façon de créer une méthode paresseuse consiste à utiliser une fonction génératrice qui génère des morceaux de données au fur et à mesure de leur lecture. Cela vous permet de parcourir le fichier sans charger l'intégralité du fichier en mémoire.

def read_in_chunks(file_object, chunk_size=1024):
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data
Copier après la connexion

Utilisation :

with open('really_big_file.dat') as f:
    for piece in read_in_chunks(f):
        process_data(piece)
Copier après la connexion

Méthode 2 : Utilisation d'Iter et d'une fonction d'assistance

Une autre option consiste à utiliser la fonction iter et une fonction d'assistance pour définir la taille de chacun. chunk.

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)
Copier après la connexion

Méthode 3 : Utilisation de l'itération basée sur des lignes

Si le fichier est basé sur des lignes, vous pouvez profiter du fichier paresseux intégré de Python objet qui génère des lignes au fur et à mesure de leur lecture.

for line in open('really_big_file.dat'):
    process_data(line)
Copier après la connexion

Ces méthodes paresseuses permettent un traitement efficace des fichiers volumineux en lisant uniquement les parties nécessaires à une fois, réduisant la consommation de mémoire et évitant les blocages du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal