讲真,就上面那个非 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 补充缺失的代码
@ -1136,4 +1134,4 @@ Web browsable API对开发者有极大的好处
支持ORM和非ORM数据资源的序列化 支持ORM和非ORM数据资源的序列化
全程自定义开发--如果不想使用更加强大的功能可仅仅使用常规的function-based views额外的文档和强大的社区支持 全程自定义开发--如果不想使用更加强大的功能可仅仅使用常规的function-based views额外的文档和强大的社区支持
## 2.19 对cookies与session的了解他们能单独用吗 ## 2.19 对cookies与session的了解他们能单独用吗
Session采用的是在服务器端保持状态的方案而Cookie采用的是在客户端保持状态的方案。但是禁用Cooki就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session而Session ID是通过Cookie来传递的禁用Cookie相当于SessionID,也就得不到Session。 Session采用的是在服务器端保持状态的方案而Cookie采用的是在客户端保持状态的方案。但是禁用Cooki就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session而Session ID是通过Cookie来传递的禁用Cookie相当于SessionID,也就得不到Session。