协程
协程又称为微线程
协程是Python中另外一种实现多任务的方式,只不过比线程更小,占用更小的执行单元,因为它自带CPU上下文,这样只要在合适的时机,我们可以把一个协程切换到另一个协程,只要这个过程中保存或恢复CPU上下文,那么程序还是可以运行的
通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另一个函数中切换,注意不是通过调用函数的方式,切换的次数以及什么时候切换到原来的函数都由开发者自己确定
greenlet模块来实现协程;
协程存在于线程之中,线程默认捕获等待协程执行
greenlet.spawn:开启协程(第一个参数为协程要执行的任务)
join:让线程等待协程执行
gevent.sleep():协程之间切换的条件;
gevent.monkey.patch_all():gevent的程序补丁
进程、线程、协程的区别:
1、进程是资源分配的单位
2、线程是操作系统调度的单位
3、进程切换需要的资源最大,效率很低
4、线程切换需要的资源一般,效率一般
5、协程切换需要的资源最小,效率高
6、多进程、多线程根据CPU核数不一样可能是并行的,但是协程是在一个线程中,所以是并发
7、Python中的线程由于GIL锁的存在,并不能够实现并行