讲真,就上面那个非 lazy 的 get_lines 也不应该用 append,直接 return f.readlines() 不就可以了...
master
Nasy 2019-03-05 18:44:25 +08:00 committed by GitHub
parent c604706031
commit c81c1656f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 5 deletions

View File

@ -291,11 +291,9 @@
现在要处理一个大小为10G的文件但是内存只有4G如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些? 现在要处理一个大小为10G的文件但是内存只有4G如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?
``` ```
def get_lines(): def get_lines():
l = []
with open('file.txt','rb') as f: with open('file.txt','rb') as f:
data = f.readlines(60000) for l in f:
l.append(data) yield l
yield l
``` ```
要考虑的问题有内存只有4G无法一次性读入10G文件需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小太小会在读取操作花费过多时间。 要考虑的问题有内存只有4G无法一次性读入10G文件需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小太小会在读取操作花费过多时间。
## 1.2 补充缺失的代码 ## 1.2 补充缺失的代码