我在一个巨大的shelve字典上循环,用每个键做一些事情:值对(不改变它)。虽然字典比内存大,但我担心的是这是否会耗尽内存。
示例代码:
dictFileName = 'dict.txt'
dict = shelve.open(dictFileName)
for key, value in dict.items():
# doing something using key and value
dict.close()
在循环的迭代中读取的键:值对是否会在下一次迭代时从内存中丢弃?我认为它必须,否则内存将被用掉,因为循环基本上读取整个字典,对吗?
通常,当通过
循环一个巨大的文件时f = open('someFileName', 'r')
for each_line in f:
# do something
下一次循环迭代会丢弃内存中的行吗?
答案 0 :(得分:0)
是的,在for循环的每次迭代开始时,键和值变量将被字典中的下一个键和值覆盖。
除非您对阻止垃圾收集的数据执行某些操作(例如,将其存储在for循环外部定义的列表中),否则您的应用程序将不会耗尽内存。
答案 1 :(得分:0)
垃圾收集器将回收不再可访问的对象使用的内存,是的。因此,您不会逐行读取文件内存不足。