易截截图软件、单文件、免安装、纯绿色、仅160KB

python dict 的内存控制

下边是我写的一段代码,随机生成100万条4列数据,并放到dict里边,然后把内容写到txt文件中

Python code:

#!/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的内存空间来存储它,但是本地的内存显然不够,不知道大家有没有办法来优化它?

谢谢

谢谢楼上的
我的问题是20mb的数据导入到DICT中,内存占用了100多MB
有办法解决这个问题吗?



好像bsDDB 只能保存String。
我的KEY 是一个ID ,对应着一个list,list 中有很多tuple,例如
123=>[(2,3,4),(3,4,5)...]
234=>[(2


相关问答:

python的引用计数

我用了def CreateMyDialog(self):
        dlg = MyDialog(None, -1, ''.decode('utf8'), (300,300), (300,200), wx.DEFAULT_DIALOG_STYLE | wx.DIALOG_NO_PARENT )
&nbs ......

初学PYTHON,大家主要用它来做什么

    刚接触,感觉功能比较强大,主要是粘合性好,可以有机结合其他语言。但不明白它主要应用于什么领域,主要做那方面的东东。开发ERP系统是否可行?
基本上什么都可以做

今天去看了一下,基本上什么 ......

[提问]Python 如何忽略 whitespace 读入

像 C 的 scanf() 那样
比如读入 1 2 3 a b c
每次读入一个
下面这个应该是你想要的吧:
Python code:

>>> k = raw_input()
0 0123 ds dsl sd
>>> k
'0 0123 ds dsl sd'
>>> ......

boost python如何封装返回指针的函数

double** Create_Double_Memory(int ySize, int xSize)
{
if (ySize <= 0 || xSize <= 0)
return NULL;

double** p = new double*[ySize];
for (int i = 0; i < ySize; i++)
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号