返回到文章

采纳

编辑于

如何理解程序中的stream

shares
share

为什么要有流?

假设没有流, 所有的数据都可以用二进制串来表示, 也没什么的呀. 我们再简单点, 就认为那是string. 假设我写了一个htmlparser:

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的了。

所以, 我们有充分的理由把这种读一点处理一点(以及相反的生成一点, 写入一点)的数据类型(或操作)抽象出来, 这就是.

你只要记住: 流就是读一点数据, 处理一点点数据 就可以了。