我发现了类似的想法,但没有一个能让我(对Python非常新手)到达我需要的地方。
以下是场景:
1. 我有一个巨大的、27GB的
我的当前代码已经过最佳优化,但只能达到大约每秒150行。考虑到
以下是场景:
1. 我有一个巨大的、27GB的
hashfile.txt
文件,其中包含独特的字符串,每个字符串都在单独的行上。
2. 我需要逐行解析此文件,在另一个不太大的(约800MB)addresses.txt
文件中搜索匹配项。
3. 当找到匹配项时,需要将其写入outfile.txt
。我的当前代码已经过最佳优化,但只能达到大约每秒150行。考虑到
hashfile.txt
中有超过15亿行,任何优化都会有所帮助。fin = 'hashed.txt'
nonzeros = open('addrOnly.txt', 'r')
fout = open('hits.txt', 'w')
lines = nonzeros.read()
i = 0
count = 0
with open(fin, 'r') as f:
for privkey in f:
address = privkey.split(", ")[0]
if address in lines:
fout.write(privkey)
i = i+1
if i%100 == 0:
count = count + 100
print "Passed: " + str(count)
str.find()
在C中实现(在CPython中),非常快速。我编写的一个Python工具的模拟实现,在我使用-O3
编译之前,实际上比我的C实现快约10%。 - Jonathon Reinhartlines = dict.fromkeys(nonzeros.read().split("\n"), 1)
。请注意,也不要使用大字符串进行查找。 - sberry