所以我在Python中有这样的代码,它将一些值写入字典,其中每个键都是学生ID号,每个值都是一个Class(学生类),其中每个Class都有一些与其相关的变量。 '这个Python代码可以更有效地写入吗?
代码 try:
if ((str(i) in row_num_id.iterkeys()) and (row_num_id[str(i)]==varschosen[1])):
valuetowrite=str(row[i])
if students[str(variablekey)].var2 != []:
students[str(variablekey)].var2.append(valuetowrite)
else:
students[str(variablekey)].var2=([valuetowrite])
except:
two=1#This is just a dummy assignment because I #can't leave it empty... I don't need my program to do anything if the "try" doesn't work. I just want to prevent a crash.
#Assign var3
try:
if ((str(i) in row_num_id.iterkeys()) and (row_num_id[str(i)]==varschosen[2])):
valuetowrite=str(row[i])
if students[str(variablekey)].var3 != []:
students[str(variablekey)].var3.append(valuetowrite)
else:
students[str(variablekey)].var3=([valuetowrite])
except:
two=1
#Assign var4
try:
if ((str(i) in row_num_id.iterkeys()) and (row_num_id[str(i)]==varschosen[3])):
valuetowrite=str(row[i])
if students[str(variablekey)].var4 != []:
students[str(variablekey)].var4.append(valuetowrite)
else:
students[str(variablekey)].var4=([valuetowrite])
except:
two=1
'
相同的代码重复很多次每个变量,所述学生有(VAR5,var6,.... VARx前提)。然而,当我执行执行这一系列变量赋值的函数时,程序中的RAM尖峰出现了。
我希望找到一种方法来提高速度或提高内存使用效率,因为运行我的这部分程序需要占用大约半个内存。 :(
感谢您的帮助
编辑:!
好让我简化我的问题: 在我的情况,我有大约6000实例化类一本字典,其中每个类有1000归因变量所有类型的字符串或字符串列表,我并不关心我的代码的行数或它的运行速度(现在,我的代码差不多有20,000行,大约有1 MB的.py文件!)我所关心的是它占用的内存量,因为这是扼杀我的CPU的罪魁祸首。最终的问题是:我构建这个庞大的字典的代码行数是多少?在内存使用方面如此之多?
我原来的代码功能正常,但RAM使用率很高。我不确定这与我收集的数据量“正常”有关。以简明的方式编写代码(如下面帮助我的人所示)实际上在我将要吃掉的RAM数量上有显着差异?确实有X种方法来构建字典,但是在这种情况下甚至会影响RAM的使用情况?
使用4个空格而不是制表符(特别是粘贴代码时)。大多数优秀的编辑可以默认为你做这个。还可以使用“pass”而不是'two = 1' – 2010-08-02 21:01:26
一些注意事项:使用'except Exception',而不是'two = 1'使用'pass'。 – 2010-08-02 21:02:27