小编seb*_*314的帖子

python:class vs tuple巨大的内存开销(?)

我在元组/列表中存储了大量复杂数据,但更喜欢使用小包装类来使数据结构更容易理解,例如

class Person:
    def __init__(self, first, last):
        self.first = first
        self.last = last

p = Person('foo', 'bar')
print(p.last)
...
Run Code Online (Sandbox Code Playgroud)

会优先于

p = ['foo', 'bar']
print(p[1])
...
Run Code Online (Sandbox Code Playgroud)

然而,似乎有一个可怕的内存开销:

l = [Person('foo', 'bar') for i in range(10000000)]
# ipython now taks 1.7 GB RAM
Run Code Online (Sandbox Code Playgroud)

del l
l = [('foo', 'bar') for i in range(10000000)]
# now just 118 MB RAM
Run Code Online (Sandbox Code Playgroud)

为什么?我有没有想到的任何明显的替代解决方案?

谢谢!

(我知道,在这个例子中,'wrapper'类看起来很傻.但是当数据变得更复杂和嵌套时,它会更有用)

python tuples class list data-structures

10
推荐指数
2
解决办法
2526
查看次数

标签 统计

class ×1

data-structures ×1

list ×1

python ×1

tuples ×1