python - DataFrame .loc 泄漏内存

标签 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 内存。

我认为这与以下问题有关:

memory leak in creating a buffer with pandas?

Memory leak using pandas dataframe

有人知道我该如何处理这种泄漏?我真的必须使用 .loc 方法来检索每次迭代的特定参数。

最佳答案

您可以每隔一段时间尝试一次gc.collect()

更好的做法是:par = par.T,然后通过 par[fac] 选择。这样您就不会每次都获取一个横截面,根据定义,它会在您保留对它的引用时创建一个副本(并且很容易只保留分配内存)。

更好的方法是重构此计算以避免此类选择并将其矢量化。

关于python - DataFrame .loc 泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22657383/

相关文章:

python - pandas:如何旋转多列并计算它们的总和?

python - 从字符串中提取带有空格的整数

python - 有没有办法在测试时设置 wsgi.input 的值?

python - App Engine 继续为以前的 Python 版本提供服务

c# - 我怎样才能释放hbitmap

iOS - AudioToolbox 内存泄漏

python - 如果请求的索引位于整数索引标签之间,pandas 数据框中是否有内置方法来包含切片的下一个/上一个行?

python - Numpy 函数输出随着每次运行而增加

python - 如何访问 Pyramid .ini 文件中的自定义部分?

c++ - LeakSanitizer : get run time leak reports?