协程


协程又称为微线程

协程是Python中另外一种实现多任务的方式,只不过比线程更小,占用更小的执行单元,因为它自带CPU上下文,这样只要在合适的时机,我们可以把一个协程切换到另一个协程,只要这个过程中保存或恢复CPU上下文,那么程序还是可以运行的

通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另一个函数中切换,注意不是通过调用函数的方式,切换的次数以及什么时候切换到原来的函数都由开发者自己确定

greenlet模块来实现协程;

协程存在于线程之中,线程默认捕获等待协程执行

greenlet.spawn:开启协程(第一个参数为协程要执行的任务)

join:让线程等待协程执行

gevent.sleep():协程之间切换的条件;

gevent.monkey.patch_all():gevent的程序补丁

进程、线程、协程的区别:

1、进程是资源分配的单位

2、线程是操作系统调度的单位

3、进程切换需要的资源最大,效率很低

4、线程切换需要的资源一般,效率一般

5、协程切换需要的资源最小,效率高

6、多进程、多线程根据CPU核数不一样可能是并行的,但是协程是在一个线程中,所以是并发

7、Python中的线程由于GIL锁的存在,并不能够实现并行