J'ai un grand fichier (21 GByte) que je veux lire en mémoire et passer ensuite à un sous-programme qui traite les données de manière transparente pour moi. Je suis sur python 2.6.6 sur Centos 6.5 donc la mise à jour du système d'exploitation ou python n'est pas une option. Actuellement, j'utiliseQuel est le moyen le plus efficace pour lire un grand fichier binaire python
f = open(image_filename, "rb")
image_file_contents=f.read()
f.close()
transparent_subroutine (image_file_contents)
qui est lent (~ 15 minutes). Avant de commencer à lire le fichier, je sais quelle est la taille du fichier, car j'appelle os.stat (nom_fichier_image) .st_size
afin que je puisse pré-allouer de la mémoire si cela avait du sens.
Merci
Utiliser 'de mmap'. https://docs.python.org/3/library/mmap.html –
Un tampon plus grand peut aider 'open (image_filename, 'rb', 64 * 1024 * 1024)' – tdelaney
Comment envisagez-vous d'accéder aux données? Accès aléatoire? Lire un bloc, processus, répéter? Ou avez-vous réellement besoin du fichier entier dans mappé en mémoire? – xavier