如何修复内存泄漏scipy.统计当生成随机变量时,rv\u是连续的?

2024-04-19 21:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的最小示例似乎存在内存泄漏(使用scipyverison0.17.0测试)

import resource
from scipy.stats import rv_continuous

class Rv(rv_continuous):

    def __init__(self, x):
        rv_continuous.__init__(self, a=0, b=1)
        self.x = x

    def _pdf(self, y):
        return 1


def call_rv(x):
    rv = Rv(x)
    # if the line below is commented out, memory usage stays constant
    s = rv.rvs()

    return 1

for k in range(10000):
    x = call_rv(k)
    if k%1000==0:
        mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
        print 'Memory usage: %s (kb)' % mem

在我的例子中,我不明白是什么导致了泄漏。值得注意的是,当注释掉随机变量生成s = rv.rvs()时,不会发生泄漏。你知道吗

在使用rv_continuous和随机变量生成时,如何避免内存泄漏?你知道吗


Tags: 内存importselfreturnifinitdefusage
1条回答
网友
1楼 · 发布于 2024-04-19 21:30:58

这不是内存泄漏,内存最终会返回操作系统。你知道吗

rv = Rv(x)

在循环中创建新实例。不要那样做,你的内存消耗就会受到限制。 如果要生成N个变量,请创建一次实例,然后执行.rvs(size=N)。你知道吗

相关问题 更多 >