python statsmodel wls memory/gc "leak" at n=1024 边界



我运行带有循环的作业,每个循环多次调用statmodels .api. wls(版本0.6.1)。尽管我尽了最大的努力,但似乎statmodels拒绝放弃内存,最终占用了我所有的内存(32Gb)。我编写了下面的示例代码来演示这个问题。

有趣的是,如果问题的维度在1024 (n =<1024)。但是,如果n>= 1025,则该脚本的内存使用线性增加,而不限制。看起来像是statsmodel中的错误。API,但这可能是我对python的理解不足。

(交叉张贴:https://github.com/statsmodels/statsmodels/issues/2428)

#!/usr/bin/python
import resource
import numpy as np
import statsmodels.api as sm
if __name__ == "__main__":
    n = 1025
    mu, sigma = 0.0, 1.0
    i = 0
    print('i,memory')
    while True:
        x = np.random.normal(mu, sigma, n)
        y = np.random.normal(mu, sigma, n)
        w = np.random.random(n)
        w /= w.sum()
        regr1 = sm.WLS(y, x, w)
        print(`i` + ',' + `resource.getrusage(resource.RUSAGE_SELF).ru_maxrss`)
        i+=1

n=1024和n=1025的前10个值:

i   N_1024  N_1025
0   60680   60812
1   60680   60848
2   60816   60988
3   60816   60996
4   60816   61016
5   60816   61028
6   60816   61040
7   60816   61064
8   60816   61080
9   60816   61084
10  60816   61092

我升级到numpy 1.9.1(从1.7.1),问题自动消失了

相关内容

  • 没有找到相关文章

最新更新