4

我确信这是一个关于 python 和垃圾收集的幼稚问题。

我有一个函数可以在内存中创建一个大型数据结构,然后返回一个整数。

我期望调用函数后,数据结构使用的内存会被释放。

但是,如果我了解下面的资源调用在做什么(感谢这篇SO post),情况似乎并非如此。每次调用该函数时,python 使用的总内存似乎都会增加。(我使用的是 Python 2.7.1。)

import resource
import random
def r(n):
    a = [random.randint(1,100) for i in range(1,n)]
    return n  # or sum(a)

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
z=r(100000)
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
z=r(100000)
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

我得到的,例如:

81584128
84389888
85995520

为什么内存使用量不断增加?

谢谢!

4

1 回答 1

0

我认为这是因为每次调用该函数时,您都在创建一个列表 a。我原以为一旦函数退出,列表就会被转储并释放使用的空间,但也许情况并非如此,或者不会发生得那么快。

于 2013-05-06T10:27:38.643 回答