IO多路复用和协程

1、IO多路复用

  作用:检测多个socket是否已经发生变化(是否连接成功/是否已经获取数据)

什么是进程、线程、协程以及它们的区别?

进程是资源分配的最小单元,其作用是进行数据隔离,

线程是cpu调度的最小单元,其作用主要是执行某个任务,

一个应用程序可以有多个进程,一个进程可以有多个线程,在其他语言中几乎很少用进程,都是用多线程,而对于python来说,IO操作主要是用多线程实现,计算密集型操作主要是用多进程实现,主要原因是python中存在GIL锁,GIL锁的作用就是保证一个进程中同一时刻只有一个线程被cpu调度,所以在python中想要利用cpu的多核优势就是开多个进程。

在后来程序员级别的人为了让代码更牛逼,创建了一个东西叫协程,

协程这个东西本身不存在,是程序员自己创造出来的,协程可以对代码的执行顺序进行控制,本身这个东西存在没有意义,但是协程要是和 IO切换放在一起就了不得了,遇到 IO操作就切换,相当于把一个线程分片,所达到的效果是线程一直没有停,一直在工作,

这就是进程、线程、协程的本质区别。

在python中用协程的时候会有一个模块叫greenlet,协程加IO自动切换的模块叫gevent。

猜你喜欢

转载自www.cnblogs.com/shanae/p/9642519.html