我的数据库中有500条记录,我将它们全部加载到字典元素的python列表中。(25个键值对)
我正在调用一个遍历列表中所有字典元素的方法,并对每条记录执行一些操作。在遍历时,我注意到在遍历了一半元素后,逻辑退出方法并在下一半再次重新启动。
我试着把它作为一个例子。 (我不能复制确切的代码,因为它是不可能的)
例如:
def loadrec():
reading from database and appending rows to a global list(mylist)
def myrun():
print "****** Execution Started **********"
for row in mylist:
doing some operations and printing a string
if __name__=="__main__":
i=0
while (i>=0): #This never ends(to make the script run forever)
loadrec()
myrun()
print "****** Execution Ended ************"
Result:
****** Execution Started **********
printed 250 records
****** Execution Ended ************
****** Execution Started **********
printed 125 records
****** Execution Ended ************
****** Execution Started **********
printed 62 records
****** Execution Ended ************
****** Execution Started **********
printed 31 records
****** Execution Ended ************
****** Execution Started **********
printed 15 records
****** Execution Ended ************
****** Execution Started **********
printed 7 records
****** Execution Ended ************
****** Execution Started **********
printed 1 record
****** Execution Ended ************
我不确定为什么每次只处理总记录的一半。 但是,最后,它正在处理所有记录。
我已经尝试检查python列表最大大小或内存是否存在任何问题,但似乎没有一个问题可能出现。
很高兴知道任何可能原因的暗示。
答案 0 :(得分:1)
我将在黑暗中进行疯狂的刺伤。
你正在做这样的事情:
def myrun():
print "****** Execution Started **********"
for row in mylist:
#Some processing here
myList.remove(row)
您无法改变正在迭代的列表。这将仅占每次处理列表的一半。您需要重构代码。如果没有向我们展示您的代码,我甚至都不会尝试重构代码。