【发布时间】:2010-07-22 04:56:29
【问题描述】:
我一直在运行 Python 脚本,这些脚本多次调用某些函数,例如 F1(x) 和 F2(x),看起来有点像这样:
x = LoadData()
for j in range(N):
y = F1(x[j])
z[j] = F2(y)
del y
SaveData(z)
如果我保留“del y”行,性能会快很多。但我不明白为什么这是真的。如果我不使用“del y”,那么我很快就会用完 RAM,不得不求助于虚拟内存,一切都会慢下来。如果我使用“del y”,则购买,然后我会反复刷新并为 y 重新分配内存。我想做的是让 y 作为静态内存,并在每次 F1(x) 调用时重用内存。但据我所知,事实并非如此。
另外,不确定它是否相关,但我的数据由 numpy 数组组成。
【问题讨论】:
-
这个问题可能假设 y 首先在循环内声明,我应该提到这一点。不过,请随意评论问题的这方面!
-
如果你不喜欢显式的
del y,那么将循环体提取到一个函数中。这样,任何完全在循环内的变量都将在每次迭代时自动清理。 -
@Duncan 我做了同样的事情,但它仍然具有相同的行为。我做错了什么还是正常行为?