python之I/O操作
IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。 比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫Input。所以,通常,程序完成IO操作会有Input和Output两个数据流。当然也有只用一个的情况,比如,从磁盘读取文件到内存,就只有Input操作,反过来,把数据写到磁盘文件里,就只是一个Output操作。 事件驱动模型 通常情况,有一下几种情况模型: 每收到一个请求,创建一个新的进程,来处理该请求。 每收到一个请求,创建一个新的线程,来处理该请求。 每收到一个请求,放入一个时间列表,让主进程通过非阻塞IO来处理请求。 综上普遍认为第三种方式为大多数网络服务器采用的方式。 例如在UI编程中,常常用到鼠标点击进行操作,那么如何,何时去获得鼠标的点击进行处理呢? 在前面学到的线程中,我们可以创建一个线程对鼠标进行检测。那么问题来了? CPU资源浪费,可能鼠标点击的频率非常小,但是扫描线程还是会一直循环检测,这会造成很多的CPU资源浪费