为了账号安全,请及时绑定邮箱和手机立即绑定

为什么“口吃”不是一个好的做法?

为什么“口吃”不是一个好的做法?

长风秋雁 2019-06-26 17:29:02
为什么“口吃”不是一个好的做法?为什么对于普通的文本文件I/O来说,“快速”不是一个很好的实践,什么时候它是有用的呢?例如,我为什么不使用这些?File.read('/path/to/text.txt').lines.each do |line|   # do something with a lineend或File.readlines('/path/to/text.txt').each do |line|   # do something with a lineend
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

为什么对于普通的文本文件I/O来说,“快速”不是一种很好的做法?

铁皮人打对了。我还想补充一句:

  • 在许多情况下,将整个文件读入内存是不可处理的(因为文件太大,或者字符串操作具有指数O()空间)

  • 通常情况下,您无法预测文件大小(上述特殊情况)。

  • 您应该始终注意内存的使用情况,如果存在其他选项(例如逐行),那么一次读取所有文件(即使是在琐碎的情况下)并不是很好的做法。我从经验中知道,VBS在这个意义上是可怕的,一个人被迫通过命令行操作文件。

这一概念不仅适用于文件,也适用于任何其他进程,在这些进程中,您的内存大小迅速增长,并且必须同时处理每一次迭代(或行)。发生器函数帮助您处理过程,或逐行读取,以便不处理内存中的所有数据。

顺便说一句,Python在读取文件In和ITSopen()方法设计为默认情况下逐行读取。见“改进Python:“产量”和生成器解释“这解释了生成器函数的一个很好的用例示例。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 435 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信