我会尽力解释我的问题和我解决问题的思路。
我使用以下代码:
我使用以下代码:
for root, dirs, files in os.walk(downloaddir):
for infile in files:
f = open(os.path.join(root,infile),'rb')
filehash = hashlib.md5()
while True:
data = f.read(10240)
if len(data) == 0:
break
filehash.update(data)
print "FILENAME: " , infile
print "FILE HASH: " , filehash.hexdigest()
使用 start = time.time() elapsed = time.time() - start 来计算哈希的时间。当我将代码指向一个大小为 653 兆字节的文件时,得到的结果如下:
root@Mars:/home/tiago# python algorithm-timer.py
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.624
root@Mars:/home/tiago# python algorithm-timer.py
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.373
root@Mars:/home/tiago# python algorithm-timer.py
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.540
现在对于一个653MB的文件,需要12秒左右的时间。我的问题是我打算在一个程序中使用这段代码来处理多个文件,其中一些文件可能达到4/5/6GB大小,这将需要更长的计算时间。我想知道是否有更快的方法来计算文件的哈希值?也许可以通过多线程来实现?我使用另一个脚本来检查CPU的使用情况,发现我的代码只使用了我的2个CPU中的1个,最大值只有25%,有没有办法改变这种情况?
提前感谢大家的帮助。