file_dict = {}
for calli, callj in itertools.product(feats,feats):
keys = seqd.keys()
if (not calli in keys) | ((not callj in keys)):
continue
else:
lst = []
##### this is the problematic part !!!!!!!!!
for jj, ii in itertools.product(seqd[callj], seqd[calli]):
if (jj - ii) > 0:
lst.append(1./(jj - ii))
del jj,ii
entry = sum(lst)
del lst
file_dict[str(calli) + " " + str(callj) + " distance"] = entry
私はいくつかのコードで上記のスニペットを使用しており、ファイルを繰り返しています。私はある種のメモリリークを持っています。私がハイライトしたループにある4行をコメントアウトすれば、私のコードは100Mバイトの一定のRAMにとどまります。しかし、私はこれをコメントを外すと、最大8-9GBの超高速になります。助けてください!!メモリリーク - dictsのpython - counter - lists
あなたはそれがあるとして、この[MCVE]を書いてみる必要があり、デカルト製品があなたに一時停止を与えなければならないものの、他の人が推論するのはかなり難しいです。あなたが達成しようとしていること、これらのデルのポイントが何かなども明確ではありません。「私のコードは壊れていて、修正してください」と助けを求めるのは難しい問題です。 – pvg
注: '' | ''は、ビット単位のOR演算子であり、あなたが必要とするブール演算子ではなく、Pythonでは ''または ''と書かれています。左辺が真であれば(つまり無条件に真とする)、右辺の評価をスキップすることができるという点で、 "または"はより効率的です。 – jasonharper
フィードバックに感謝します!私は解決策を見つけ、それを下に掲示しています! –