gpt4 book ai didi

python - 使用 rv_continuous 生成随机变量时如何修复 scipy.stats 中的内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:08 27 4
gpt4 key购买 nike

以下最小示例似乎存在内存泄漏(使用 SciPy 版本 0.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和随机变量生成时如何避免内存泄漏?

最佳答案

这不是内存泄漏,内存最终会返回给操作系统。

rv = Rv(x)

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

关于python - 使用 rv_continuous 生成随机变量时如何修复 scipy.stats 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41075272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com