Не зная алгоритма, стоящего за fuzz
, я сомневаюсь, что мы можем многое сделать, чтобы сократить асимптотическое время выполнения.Там могут быть некоторые приемы, чтобы обрезать явно плохие пары, но, вероятно, не намного дальше.Другой ответ предполагает, что вы выполняете точное совпадение, и не будет работать для нечеткого сопоставления строк.
То, что вы можете попытаться сделать, это попытаться пакетировать ваши вызовы, и надеяться, что fuzzywuzzy оптимизировал некоторую логику для пакетов в своемprocess
.Что-то вроде
from fuzzywuzzy import process
for name in names400:
matches = filter(lambda x: x[1] > 90, process.extract(name, names90000, limit=90000))
for match_name, score in matches:
response[match_name] = name
Также обратите внимание, что на странице github для fuzzywuzzy говорится, что использование python levenshtein может ускорить вычисления в 4-10 раз.