我已经通过这段代码确定了另一个与Pandas泄漏的内存:
import pandas as pd
store = pd.HDFStore(hdf[0])
par = store[hdf[1]][:, hdf[2]]
store.close()
for pixel in pix_fac.itervalues():
fac = pixel[4][::2]
meas = array(par.loc[fac])
100%的计算机内存会在几秒钟内到达,冻结一切。我使用的是Debian 2.30,Intel i5,8 GB RAM。
我认为这与以下问题有关:
memory leak in creating a buffer with pandas?
Memory leak using pandas dataframe
有人知道我该如何应对这种泄漏?我真的必须使用.loc方法来检索每次迭代的特定参数。
答案 0 :(得分:1)
您可以偶尔尝试gc.collect()
。
更好的是,执行:par = par.T
,然后通过par[fac]
选择。这样你就不会每次都有一个横截面,根据定义,它会创建一个副本(并且很容易保持分配内存),因为你保持对它的引用。
更好的是重构这个计算以避免这种类型的选择并将其矢量化。