下面的最小示例似乎存在内存泄漏(使用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
和随机变量生成时,如何避免内存泄漏?你知道吗
这不是内存泄漏,内存最终会返回操作系统。你知道吗
在循环中创建新实例。不要那样做,你的内存消耗就会受到限制。 如果要生成N个变量,请创建一次实例,然后执行
.rvs(size=N)
。你知道吗相关问题 更多 >
编程相关推荐