无需使用多进程即可更快地从Fuzzywuzzy获取结果的方法

时间:2018-09-11 12:48:09

标签: python-3.x pandas fuzzywuzzy

我正在运行一个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)

我要对30万条记录进行1000条记录的迭代,以获得2个最接近的匹配项。执行需要40分钟。 我需要针对这30万条记录重复30万条记录。这样,将需要近200个小时来执行,而且当我不在无法负担的系统上工作时,也是如此。

不能使用多重处理,因为它会导致我的系统出现性能问题。

如何更快地执行程序?

0 个答案:

没有答案