天天看点

Python 第七章 IO编程

IO编程

IO在计算机中指的是input/output,也就是输入和输出。由于数据运行时实在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常磁盘网络等,就需要IO接口。

对于本机来说,往外的叫做Output,从外面接收的叫做Input。所以,程序完成IO操作会有Input和Output两个数据流。当然也有只用一个的情况,比如,从磁盘读取文件到内存,就只有Input,反过来,把数据写到磁盘中,就只有Output操作。

IO编程中,流(stream)是一个很重要的概念。Input Stream就是数据从外面流到内存。反之,数据从内存流出就是Output stream。

由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,存在速度不匹配的问题。如何解决这种问题,存在两种解决方法:

第一种,CPU等着,也就是程序暂停执行后续代码,这种模式成为同步IO。

另外一种是,CPU不等待,后续代码可以继续执行,这种成为异步IO。

同步和异步的区别在于是否等待IO的执行结果。

很明显,异步IO写出来的程序性能远高于同步IO,但是异步IO的问题是编程模型复杂。异步IO的复杂度远高于同步IO。

操作IO的能力是由操作系提供的,每一种编程语言都会把操作系统提供的低级C语言接口封装起来方便实用,Python也不例外。我们后边会详细讲解Python的IO编程接口。

注,本章的IO编程都是同步IO,异步IO复杂度太高,后续涉及到服务器端程序开发在讨论。