J'écris une application p2p en Python et j'utilise le module hashlib pour identifier des fichiers avec le même contenu mais des noms différents dans le réseau. Le truc c'est que j'ai testé le code qui fait le hash pour les fichiers sous Windows (Vista), avec Python 2.7 et c'est très rapide (moins d'une seconde, pour quelques gigaoctets). Donc, sous Linux (Fedora 12, avec Python 2.6.2 et Python 2.7.1 compilé par moi-même car je n'ai pas trouvé de rpm avec yum) est tellement plus lent, presque une minute pour les fichiers de moins de 1Go.Hashlib sous Windows et Linux
La question est: Pourquoi? et Puis-je faire quelque chose pour améliorer les performances sous Linux?
Le code pour le hachage est
import hashlib
...
def crear_lista(directorio):
lista = open(archivo, "w")
for (root, dirs, files) in os.walk(directorio):
for f in files:
#archivo para hacerle el hash
h = open(os.path.join(root, f), "r")
#calcular el hash de los archivos
md5 = hashlib.md5()
while True:
trozo = h.read(md5.block_size)
if not trozo: break
md5.update(trozo)
#cada linea es el nombre de archivo y su hash
size = str(os.path.getsize(os.path.join(root, f))/1024)
digest = md5.hexdigest()
#primera linea: nombre del archivo
#segunda: tamaño en KBs
#tercera: hash
lines = f + "\n" + size + "\n" + digest + "\n"
lista.write(lines)
del md5
h.close()
lista.close()
J'ai changé le r
par rb
et rU
mais les résultats sont les mêmes
Veuillez corriger vos blocs de code. – robert