为什么要有流?
假设没有流, 所有的数据都可以用二进制串
来表示, 也没什么的呀. 我们再简单点, 就认为那是string
. 假设我写了一个html
的parser
:
def html_parse(html_string):
// do magic
return html_tree
可是我们可能是从网络获得 html_string
的, 大家都知道网络相比于CPU
的速度那就相当慢了, 我们希望能够边获得数据, 边解析数据, 充分利用CPU
, 那么我们可能会这样写
parser = Parser()
while not is_net_done():
bytes = read_little_from_net()
parser.parse_little(bytes)
print parser.tree
也就是, 我们会从网络里面读一点, 解析一点。
类似的需求很常见, 比如播放视频的时候, 我们肯定是希望从硬盘(或者网络)读取一点, 播放一点, 一个视频4GB, 要是全部载入内存才能播放, 好多人都看不成1080p的了。
所以, 我们有充分的理由把这种读一点处理一点(以及相反的生成一点, 写入一点)的数据类型(或操作)抽象出来, 这就是流
.
你只要记住: 流就是读一点数据, 处理一点点数据 就可以了。