それぞれ約500万文字の長さの3つの単語を反復処理しており、各単語を識別する20文字のシーケンスを見つけたいと考えています。つまり、長さ20のすべてのシーケンスを、その単語に固有の1つの単語で検索したいと思います。私の問題は、私が書いたコードの実行に非常に長い時間がかかることです。私は一晩で私のプログラムを実行している一言も完了したことがありません。
以下の関数は、辞書を含むリストを取得します。各辞書には、20の可能な各単語と、500万の長い単語の1つからの位置が含まれています。
誰かがこれを最適化する方法を知っているなら、私は本当に感謝するでしょう、私は続行する方法の手がかりがありません...
これが私のコードのサンプルです:
def findUnique(list):
# Takes a list with dictionaries and compairs each element in the dictionaries
# with the others and puts all unique element in new dictionaries and finally
# puts the new dictionaries in a list.
# The result is a list with (in this case) 3 dictionaries containing all unique
# sequences and their locations from each string.
dicList=[]
listlength=len(list)
s=0
valuelist=[]
for i in list:
j=i.values()
valuelist.append(j)
while s<listlength:
currdic=list[s]
dic={}
for key in currdic:
currval=currdic[key]
test=True
n=0
while n<listlength:
if n!=s:
if currval in valuelist[n]: #this is where it takes to much time
n=listlength
test=False
else:
n+=1
else:
n+=1
if test:
dic[key]=currval
dicList.append(dic)
s+=1
return dicList