0
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行,我的代码保持在常量RAM〜100mb。不过,当我取消这个评论时,它的速度将达到8-9GB。请帮忙!!内存泄漏 - 蟒蛇 - 计数器 - 在词典中的列表
你应该尝试写这样的[MCVE],因为它是,尽管笛卡尔产品应该让你暂停,但其他人很难推断。目前还不清楚你想要完成的是什么,这些“del”的意义是什么等等。“我的代码被破坏了,修复它”往往是一个难以获得帮助的问题。 – pvg
注意:''|''是按位或运算符,而不是您想要的布尔运算符 - 在Python中拼写为''或''。 ''或''效率更高,因为如果左侧是真的,它可以跳过右侧的评估(从而使结果无条件成立)。 – jasonharper
感谢您的反馈!我找到了一个解决方案,并在下面发布它! –