Python で p2p アプリケーションを作成しており、hashlib モジュールを使用して、ネットワーク内で同じ内容で名前が異なるファイルを識別しています。
問題は、Python 2.7 を使用して、Windows (Vista) でファイルのハッシュを行うコードをテストしたところ、非常に高速でした (数ギガバイトで 1 秒未満)。そのため、Linux (Fedora 12、Python 2.6.2 および Python 2.7.1 を使用して、yum を使用した rpm が見つからなかったため、自分でコンパイル) は非常に遅く、1 GB 未満のファイルの場合はほぼ 1 分です。
問題は、なぜですか?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()
r
byrb
を変更しましrU
たが、結果は同じです