Python核心技术与实战——十五|Python协程
我们在上一章将生成器的时候最后写了,在Python2中生成器还扮演了一个重要的角色——实现Python的协程。那什么是协程呢? 协程 协程是实现并发编程的一种方式。提到并发,肯很多人都会想到多线程/多进程模型,这就是解决并发问题的经典模型之一。在最初的互联网世界中,多线程/多进程就在服务器并发中起到举足轻重的作用。 但是随着互联网的发展,慢慢很多场合都会遇到C10K瓶颈,也就是同时连接到服务器的客户达到1W,于是,很多代码就跑崩溃,因为进程的上下文切换占用了大量的资源,线程也顶不住如此巨大的压力。这时候,NGINX就带着事件循环闪亮登场了。 事件循环启动一个统一的调度器,让调度器来决定一个时刻去运行哪个任务,于是省却了多线程中启动线程、管理线程、同步锁等各种开销。同一时期的NGINX,在高并发下也能保持资源消耗低、性能高,相比Apache也支持更多的并发连接。 再到后来,出现了一个很有名的名词——回调地狱(callback hell).很多写过JavaScript的朋友明白那是什么。大家惊喜的发现,这种工具很完美的继承了事件循环的优越性,同时还能提供async/await语法糖,解决了执行性和可读性共存的难题。于是,协程渐渐被更多人发现并看好,也有越来越多的人尝试用Node.js做起了后端开发。 回到Python中,使用生成器来实现协程已经是Python2时代的老方法了