小编jmo*_*0x0的帖子

Python列出异常内存使用情况

我正在开发一个涉及从保存在内存中的大型列表中访问数据的项目.因为列表非常庞大(数百万行),所以我会关注使用多少内存.我使用OS X,因此我在创建这些列表时保持Activity Monitor处于打开状态.

我注意到列表使用的内存量可能会有很大差异,具体取决于它的构造方式,但我似乎无法弄清楚原因.

现在来看一些示例代码:

(我在OSX 10.8.3上使用Python 2.7.4)

下面的第一个函数创建一个列表,并用相同的三个随机数填充它.

下面的第二个函数创建一个列表,并用所有不同的随机数填充它.

import random
import sys


def make_table1(size):
    list1 = size *[(float(),float(),float())] # initialize the list
    line = (random.random(), 
            random.random(), 
            random.random())
    for count in xrange(0, size): # Now fill it
        list1[count] = line
    return list1

def make_table2(size):
    list1 = size *[(float(),float(),float())] # initialize the list
    for count in xrange(0, size): # Now fill it
        list1[count] = (random.random(), 
                        random.random(), 
                        random.random())
    return list1
Run Code Online (Sandbox Code Playgroud)

(首先让我说,我意识到上面的代码可以更有效地编写.它是用这种方式编写的,以保持两个示例尽可能相似.)

现在我使用这些函数创建一些列表:

In [2]: thing1 = make_table1(6000000)

In [3]: sys.getsizeof(thing1)
Out[3]: …
Run Code Online (Sandbox Code Playgroud)

python memory list

7
推荐指数
1
解决办法
648
查看次数

标签 统计

list ×1

memory ×1

python ×1