python dict 的内存控制
下边是我写的一段代码,随机生成100万条4列数据,并放到dict里边,然后把内容写到txt文件中
当我执行的时候,生成了shapes的时候内存占用到达了200MB多,但是生成文件的时候只有30MB多一点,这是为什么能?这个办法能否有优化,因为我可能要导入500M的文件,像这样的话可能需要3-4g的内存空间来存储它,但是本地的内存显然不够,不知道大家有没有办法来优化它?
谢谢
#!/usr/bin/python2.5
import random
import time
time.sleep(5)
shapes = {}
print "--------------START---------------------------"
for i in range(1000000):
shape_id = str(random.randint(0, 10000))
r1 = str(random.randint(0, 1000000))
r2 = str(random.randint(0, 1000000))
r3 = str(random.randint(0, 1000000))
r4 = str(random.randint(0, 1000000))
shapes.setdefault(shape_id, []).append([r1, r2, r3, r4])
print '---------------Dictionary---------------------'
time.sleep(5)
f = open("test.txt", "w")
for shape_id, res in shapes.items():
for (r1, r2, r3, r4) in res:
f.write(shape_id + ',' + r1 + ',' + r2 + ',' + r3 + ',' + r4 + '\n')
f.close()
当我执行的时候,生成了shapes的时候内存占用到达了200MB多,但是生成文件的时候只有30MB多一点,这是为什么能?这个办法能否有优化,因为我可能要导入500M的文件,像这样的话可能需要3-4g的内存空间来存储它,但是本地的内存显然不够,不知道大家有没有办法来优化它?
谢谢
...全文
相关推荐
详解python 内存优化
这样,即便创建多个实例,也不会为每个实例分配额外的内存来存储属性信息,从而节省了内存。通过使用 `__slots__`,我们可以在一定程度上控制实例的内存消耗,尤其适用于创建大量相似对象的情况。
Python __dict__.rar
**节省内存**:对于没有自定义属性的简单对象,Python解释器可能不会为每个实例创建单独的`__dict__`,而是共用一个。
Python中查看变量的类型内存地址所占字节的大小
在Python中,不同的数据类型占用的内存大小不同。
通过实例了解python__slots__使用方法
这个字典会占用额外的内存空间。使用`__slots__`后,Python不再为每个实例创建`__dict__`,而是为每个指定的属性创建单独的槽(slot),这减少了内存消耗。
Python中的__SLOTS__属性使用示例
在Python中,__slots__属性是类定义中的一个特殊属性,它的目的是为了优化内存使用。通常情况下,Python中定义的类的实例会有一个__dict__属性,用于存储实例的属性和对应的值。


