2つの文字列の間にあるすべての形式の挿入を見つけようとしています。したがって、1400万の文字列のリストがあり、各文字列について、どのような挿入によって1つの文字列を別の文字列に変換できるかを確認する必要があります(基本的に挿入頻度をカウントします)。xが1つの文字列で、yが別の文字列であり、xがyの部分文字列であるとすると、どの挿入がxをyに変換するかを調べる必要があります。
次のコードセグメントを使用しています。それは機能しますが、多くの時間がかかっています。64個のプロセッサに負荷を分散させようとしましたが、完了するまでに20日かかります。
for i in Words:
#trying to distribute load across different processes, so can ignore this part
h = hashlib.sha256(i)
n = int(h.hexdigest(),base=16)
if (n%64!=ix): #ix is a process based id
continue
for j in Words:#
if len(i)>len(j):
continue
if( i!=j and i in j): # i is a substring of j
ind=j.find(i)
s1=j[0:ind]
s2=j[ind+len(i):len(j)]
if(len(s1)>0):
if (not transform.has_key(s1)):
transform[s1]=1
else:
transform[s1]+=1
if(len(s2)>0):
if (not transform.has_key(s2)):
transform[s2]=1
else:
transform[s2]+=1