DataFrame .loc泄漏内存

时间:2014-03-26 10:01:07

标签: python memory-leaks pandas dataframe

我已经通过这段代码确定了另一个与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方法来检索每次迭代的特定参数。

1 个答案:

答案 0 :(得分:1)

您可以偶尔尝试gc.collect()

更好的是,执行:par = par.T,然后通过par[fac]选择。这样你就不会每次都有一个横截面,根据定义,它会创建一个副本(并且很容易保持分配内存),因为你保持对它的引用。

更好的是重构这个计算以避免这种类型的选择并将其矢量化。