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