我想搜索一个非常大的文本文件,其中SHA1哈希使用 Python 按哈希值排序。文本文件有10GB和500 000 000行。每行如下所示:
000009F0DA8DA60DFCC93B39F3DD51A088ED3FD9:27
我由此比较文件中是否出现给定的哈希值。我用BinarySearch试过,但它只适用于一个小测试文件。如果我使用该文件进行10GB搜索需要太长时间,并且该过程有时会因为16GB RAM超出而被终止。
f=open('testfile.txt', 'r')
text=f.readlines()
data=text
#print data
x = '000009F0DA8DA60DFCC93B39F3DD51A088ED3FD9:27'
def binarySearch(data, l, r, x):
while l <= r:
mid = l + (r - l)/2;
# Check if x is present at mid
if data[mid] == x:
return mid
# If x is greater, ignore left half
elif data[mid] < x:
l = mid + 1
#print l
# If x is smaller, ignore right half
else:
r = mid - 1
#print r
# If we reach here, then the element
# was not present
return -1
result = binarySearch(data,0, len(data)-1, x)
if result != -1:
print "Element is present at index % d" % result
else:
print "Element is not present in array"
有没有办法将10GB文本文件一次加载到 RAM 中并一遍又一遍地访问它?我有16GB RAM可用的。应该够了吧?我还能做些什么来加快搜索速度吗?不幸的是,我不再知道了。
GCT1015
相关分类