Potrzebuję porównać wiele ciągów podobnych do 50358c591cef4d76. Mam funkcję odległości Hamminga (używając pHash), z której mogę korzystać. Jak mogę to zrobić wydajnie? Mój Pseudokod byłoby:Efektywne wykorzystanie pythona do obliczenia odległości Hamminga
For each string
currentstring= string
For each string other than currentstring
Calculate Hamming distance
Chciałbym wyjściowe wyniki jako matrycy i być w stanie odzyskać wartości. Chciałbym również uruchomić go za pośrednictwem Hadoop Streaming!
Wszelkie wskazówki są przesyłane z wdzięcznością.
Oto co próbowałem ale jest powolny:
import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()
setOfFiles = set(files)
print len(setOfFiles)
i=0
j=0
for fname in files:
print 'fname',fname, 'setOfFiles', len(setOfFiles)
oneLessSetOfFiles=setOfFiles
oneLessSetOfFiles.remove(fname)
i+=1
for compareFile in oneLessSetOfFiles:
j+=1
hash1 = pHash.imagehash(fname)
hash2 = pHash.imagehash(compareFile)
print ...
Jeśli chcesz porównać każdy ciąg z każdym ciągiem, będziesz miał dwie pętle zagnieżdżone. Czy to właśnie chcesz robić? –