关于读取指定行的问题

如果按你的逻辑来说,是图1这样的,不断返回一行信息,直到返回自己想要的一行,但这样做,很耗内存
图2,是python一个基本库linecache的源码,也可以返回指定行,即get('a.txt',5)。但它 的内部逻辑,我不是很懂,就图2红色框内的代码,请问一下,这是什么意思

这里面有一行是中间有个函数是getlines,这个函数我猜测是一次将文件全部读入内存。这个函数比较消耗内存,我查了一下,目前逐行读取的话,可能效率最高的是:

f=open(filename)
for line in f:
pass

这种效率最高,把我之前写的readline改成这个,效率高。这是是用生成器的方式读取文件,是最节约内存的方式,不会出现像你说的内存占用多的问题。反而一次把文件全部读入内存消耗的内存多。不过对于文件很大,而机器内存也很多的情况,一次把文件读入内存再处理可能会更快。但是读取任一行,我建议使用上面的方法。你可以做个测试。找一个文件,然后同时读取第30行,循环1000次,看总时间,就知道哪种效率高了。

我看了下你说的源码,这个是用来缓存的,从cache一词也看出来了。所以占用内存肯定非常多。

追问

恩 对的

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
相似回答