Python 异步io,

  Python 异步io,

  1、IO操作

  比CPU、网络等IO快很多。在一个线程中,CPU执行代码的速度非常快。但是,一旦遇到I/O操作,比如读写文件,发送网络数据,I/O操作需要完成后才能进行下一步。这种情况称为同步IO。

  在IO操作过程中,当前线程被挂起,其他需要CPU执行的代码不能被当前线程执行。

  因为一个IO操作阻塞了当前线程,其他代码无法执行,所以我们必须使用多线程或者多个进程并发执行代码,为多个用户服务。每个用户将被分配一个线程。如果线程由于IO而挂起,其他用户的线程不会受到影响。

  多线程多进程模型虽然解决了并发问题,但是系统不能增加线程。由于系统中线程切换的成本很高,一旦线程过多,CPU时间就会花在线程切换上,实际代码运行时间就会少,导致性能下降严重。

  因为我们要解决的问题是CPU的高速执行能力和IO设备的龟速严重不匹配,多线程多进程只是解决这个问题的一种方式。

  2、异步IO处理

  解决IO问题的另一种方法是异步IO。当代码需要执行耗时的IO操作时,只发出IO指令,然后执行其他代码,不等待IO结果。一段时间后,IO返回结果时,会通知CPU进行处理。

  可以想象,如果正常顺序编写的代码实际上无法完成异步IO,那么异步IO模型就需要一个消息循环,在这个循环中主线程重复“读取消息3354,处理消息”的过程。

  从发出IO请求到接收IO完成,主线程只能在同步IO模式下挂起,而在异步IO模式下,主线程并不休息,而是继续处理消息循环中的其他消息。在这种异步IO模式下,一个线程可以同时处理多个IO请求,不存在切换线程的操作。对于大多数IO密集型应用,使用异步IO会大大提高系统的多任务处理能力。

  python异步IO就是这样同时处理请求的。希望能帮到你。更多Python学习指南:python基础教程

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: