0
我正在Python中編寫一個p2p應用程序,並且正在使用hashlib模塊來標識網絡中具有相同內容但名稱不同的文件。Windows和Linux中的Hashlib
問題是我測試了在Windows(Vista)中使用Python 2.7進行文件哈希的代碼,它的速度非常快(不到一秒,幾千兆字節)。所以,在Linux下(Fedora 12,由於我自己編譯的Python 2.6.2和Python 2.7.1,因爲我沒有找到與yum相同的rpm),速度非常慢,對於小於1gb的文件幾乎是一分鐘。
問題是,爲什麼?和我可以做些什麼來提高Linux的性能嗎?
的哈希代碼是
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()
我通過rb
和rU
改變r
但結果是一樣的
請修復您的代碼塊。 – robert 2010-12-11 17:45:08