Я использую код Python, в котором я пытаюсь получить 2 ближайших совпадения по 2 наборам данных.Я использую выдержку из Fuzzywuzzy, чтобы получить результаты.Код ниже:
from fuzzywuzzy import process
import pandas as pd
import time
data1=pd.read_csv('Dump.csv',encoding='latin-1')
data2=pd.read_csv('Dump5.csv',encoding='latin-1')
b=[]
a=time.time()
long_name=data2['LONG_NAME'].tolist()
long_juri=data2['City'].tolist()
def get_matches(name,juri,limit=2):
result=process.extract(name,data1[data1.JURISDICTION==juri]['LONG_NAME'].tolist(),limit=limit)
return result
for i in range(1,1000):
b.append(get_matches(long_name[i],long_juri[i]))
print(round(time.time()-a,10),"seconds")
c=pd.DataFrame.from_records(b)
c.to_csv("Results.csv",index=False)
Я перебираю 1 000 записей против 300 000 записей, чтобы получить 2 ближайших совпадения.Это займет 40 минут, чтобы выполнить.Мне нужно повторить 300 000 записей против этих 300 000 записей.Таким образом, это займет около 200 часов, и это также, когда я не работаю в системе, которую я не могу себе позволить.
Невозможно использовать многопроцессорность, так как это приведет к снижению производительности моей системы.
Как выполнить программу быстрее?