Ich schreibe eine P2P-Anwendung in Python und verwende das hashlib-Modul, um Dateien mit demselben Inhalt, aber unterschiedlichen Namen im Netzwerk zu identifizieren.Hashlib in Windows und Linux
Die Sache ist, dass ich den Code, der den Hash für die Dateien in Windows (Vista), mit Python 2.7 und es ist sehr schnell (weniger als eine Sekunde, für ein paar Gigabyte). Also, in Linux (Fedora 12, mit Python 2.6.2 und Python 2.7.1 kompiliert von mir selbst, weil ich keine rpm mit yum gefunden habe) ist so viel langsamer, fast eine Minute für Dateien kleiner als 1GB. Die Frage ist Warum? und Kann ich etwas tun, um die Leistung in Linux zu verbessern?
Der Code für den Hash ist
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()
ich die r
von rb
geändert und rU
aber die Ergebnisse sind die gleichen
Bitte reparieren Sie Ihre Code-Blöcke. – robert