python 强制释放内存_python 内存释放问题,高手请帮帮忙

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我重复一楼的问题, range(1024*1024)确实占用很大内存,但是del后,内存几乎是马上就释放了, 没有内存持续占用问题。我测试操作系统是mac ox 10.5.6

在实际应用中,range 对大的数是不适合的,应该用xrange。

可以参考:

http://avinashv.net/2008/05/pythons-range-and-xrange/

Original text: ange and xrange are very different in Python; do you use them correctly? I see a lot of code where the author seemingly didn’t know the difference. At first glance, there doesn’t seem to be one at all—in fact, when I started hacking in Python, I used them interchangeably because I couldn’t figure out what the difference was, and in all the code I was writing at the time, swapping one for the other made no conceivable difference.

It’s a subtle difference. range returns exactly what you think: a list of consecutive integers, of a defined length beginning with 0. xrange, however, returns an “xrange object”, which acts a great deal like an iterator. If you’ve spent anytime with iterators, this difference should make sense. Here’s an example:

range(1000000)

xrange(1000000)

range(1000000) will return a list of one million integers, whereas xrange(1000000) will return (what is essentially) an iterator sequence. Indeed, xrange supports iteration, whereas range does not. The overall benefit is minimal, because xrange (in the words of the Python manual) “still has to create the values when asked for them,” but at each call, it consumes the same amount of memory regardless of the size of the requested list. At extremely large values, this is a major benefit over range. Another benefit is also apparent: if your code is going to break out while traversing over a generated list, then xrange is the better choice as you are going to consume less memory overall if you break.

你可能感兴趣的:(python,强制释放内存)