在搁置字典上循环时,Python是否会丢弃在上一次迭代中从内存中读取的key:value对?

在搁置字典上循环时,Python是否会丢弃在上一次迭代中从内存中读取的key:value对?,python,dictionary,shelve,Python,Dictionary,Shelve,我在一个巨大的搁置字典上循环,使用每个键:值对做一些事情(不改变它)。虽然字典比内存大,但我关心的是它是否会耗尽内存 示例代码: dictFileName = 'dict.txt' dict = shelve.open(dictFileName) for key, value in dict.items(): # doing something using key and value dict.close() 在循环的迭代中读取的key:value对是否会在下一次迭代时从内存中丢

我在一个巨大的搁置字典上循环,使用每个键:值对做一些事情(不改变它)。虽然字典比内存大,但我关心的是它是否会耗尽内存

示例代码:

dictFileName = 'dict.txt'
dict = shelve.open(dictFileName)
for key, value in dict.items():
    # doing something using key and value   
dict.close()
在循环的迭代中读取的key:value对是否会在下一次迭代时从内存中丢弃?我想一定是这样,否则内存就会用完,因为循环基本上读取了整个字典,对吗

一般来说,当通过

f = open('someFileName', 'r')
for each_line in f:
    # do something

内存中的行是否会被循环的下一次迭代丢弃?

是的,在for循环的每次迭代开始时,键和值变量将被字典中的下一个键和值覆盖


除非您对数据执行某些操作以防止其被垃圾收集(例如,将其存储在for循环外部定义的列表中),否则应用程序不会耗尽内存。

是的,在for循环的每次迭代开始时,将使用字典中的下一个键和值覆盖键和值变量


除非您对数据执行某些操作以防止其被垃圾收集(例如,将其存储在for循环外部定义的列表中),否则您的应用程序将不会耗尽内存。

不再可访问的对象使用的内存将由垃圾收集器回收,是的。这样,逐行读取文件时不会耗尽内存。

不再可访问的对象使用的内存将由垃圾收集器回收,是的。这样,您就不会在逐行读取文件时耗尽内存。

谢谢您,克里斯!现在我很放松。谢谢你,克里斯!现在我很放松。谢谢你们pvg和克里斯!现在我很放松。谢谢你们pvg和克里斯!现在我很放松。