Je suis en train d'essayer de mettre au banc d'essai le Amazon S3 python library pour permettre la manipulation en morceaux de gros fichiers. En ce moment, il fait un "self.body = http_response.read()", donc si vous avez un fichier 3G, vous allez tout lire en mémoire avant de prendre le contrôle.Python: joindre efficacement des blocs d'octets en un seul gros morceau?
Mon approche actuelle consiste à essayer de garder l'interface pour la bibliothèque identique, mais de fournir un rappel après avoir lu chaque morceau de données. Quelque chose comme ce qui suit:
data = []
while True:
chunk = http_response.read(CHUNKSIZE)
if not chunk:
break
if callback:
callback(chunk)
data.append(chunk)
Maintenant, je dois faire quelque chose comme:
self.body = ''.join(data)
est-rejoindre la bonne façon de le faire ou est-il une autre façon (meilleure) de mettre tous les morceaux ensemble?
Excellent point concernant le besoin de 6 Go au lieu de 3 avec ma méthode ci-dessus. Je veux traiter les morceaux et m'en débarrasser (il suffit de les écrire sur le disque dans ce cas), mais je voulais aussi préserver la sémantique existante qui donne accès aux données en mémoire. Je pourrais devoir renoncer à ce dernier. – Parand