Python在Shelve字典上循环时是否丢弃了密钥:在内存中从内存中读取的值对?

时间:2015-07-07 16:52:42

标签: python dictionary shelve

我在一个巨大的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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

垃圾收集器将回收不再可访问的对象使用的内存,是的。因此,您不会逐行读取文件内存不足。