Python ——gevent协程
异步,多线程的区别
- 多线程是对cpu剩余劳动力的压榨,是一种技术,强调的是并发(想想web server 需要处理大量并发请求的场景)。
- 异步强调的是非阻塞,是一种编程模式(pattern),主要解决了UI响应被阻塞的问题,可借助线程技术或者硬件本身的计算能力解决。
协程
- 协程也被称为微线程,是一种比线程更轻量级的任务调度方式,一个线程内可以有多个协程。
- 协程是一种可以在子程序内部中断,转而执行其他子程序,之后再从中断点继续执行的机制。比如在 I/O 操作时就可以执行其他子程序,等 I/O 操作数据就绪时继续执行,就可以在单个线程内实现非阻塞式的复用,大大提升效率。
gevent.spawn() 此方法用于创建一个 greenlet 实例,用于执行特定的方法
gevent.joinall() 用于等待所有的 greenlet 实例执行完毕