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
Ich benutze das obige Snippet in einigen Code und Iterieren über Dateien. Ich habe ein Speicherleck. Wenn ich nur diese 4 Zeilen auskommentiere, die in der Schleife sind, die ich hervorgehoben habe, bleibt mein Code bei konstantem RAM ~ 100mb. Allerdings, wenn ich dies auskommentiere, geht es bis zu ~ 8-9GB super schnell. Bitte helfen Sie !!Speicherleck - Python - Zähler - Listen in Dicts
Sie sollten versuchen, einen [MCVE] dies zu schreiben, wie es ist, Es ist ziemlich schwer für andere, darüber nachzudenken, obwohl die kartesischen Produkte Ihnen eine Pause geben sollten. Es ist auch nicht klar, was Sie zu erreichen versuchen, was der Sinn dieser 'del's ist, etc. 'Mein Code ist kaputt, fix it' tendiert dazu, eine schwierige Frage zu sein, um Hilfe zu bekommen. – pvg
Hinweis: '' | '' ist der bitweise OR-Operator, nicht der boolesche Operator, den Sie wollen - der in Python mit '' oder'' geschrieben wird. '' oder'' ist effizienter, da es die Bewertung der rechten Seite überspringen kann, wenn die linke Seite wahr ist (wodurch das Ergebnis unbedingt wahr wird). – jasonharper
danke für die Rückmeldung! Ich habe eine Lösung gefunden und posten sie unten! –