Tag: asyncio

python异步框架中协程之间的并行

前言python中的异步协程框架有很多,比如 tornado, gevent, asyncio, twisted 等。协程带来的是低消耗的并发,在等待IO事件的时候可以把控制权交给其它的协程,这个是它并发能力的保障。但是光有并发还是不够的,高并发并不能保证低延迟,因为一个业务逻辑的流程可能包含多个异步IO的请求,如果这些异步IO的请求是一个一个逐步执行的,虽然server的吞吐量还是很高,但是每个请求的延迟就会很大。为了解决这类问题,每个框架都有各自不同的方式,下面我们就来分别看看,它们都是怎么管理互不相关协程之间的并行的。 如果对于异步IO不了解的朋友,可以先去了解下相关资料:epoll, select, aio等。

【译】深入理解python3.4中Asyncio库与Node.js的异步IO机制

译者:xidui原文: http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html 译者前言 如何用yield以及多路复用机制实现一个基于协程的异步事件框架? 现有的组件中yield from是如何工作的,值又是如何被传入yield from表达式的? 在这个yield from之上,是如何在一个线程内实现一个调度机制去调度协程的? 协程中调用协程的调用栈是如何管理的? gevent和tornado是基于greenlet协程库实现的异步事件框架,greenlet和asyncio在协程实现的原理又有什么区别? 去年稍微深入地了解了下nodejs,啃完了 朴灵 的 《深入浅出Node.js》,自己也稍微看了看nodejs的源码,对于它的异步事件机制还是有一个大致的轮廓的。虽然说让自己写一个类似的机制去实现异步事件比较麻烦,但也并不是完全没有思路。