设为首页 加入收藏

TOP

玩转 Python 3.5 的 await/async(二)
2015-11-10 13:44:46 来源: 作者: 【 】 浏览:10
Tags:玩转 Python 3.5 await/async
Iteration 异常。


为此我们新建一个函数,这个函数传入一个协程列表,函数执行这些协程直到全部结束。我们现在要做的就是调用这个函数。
def run(coros):
? ? coros = list(coros)


? ? while coros:
? ? ? ? # Duplicate list for iteration so we can remove from original list.
? ? ? ? for coro in list(coros):
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? coro.send(None)
? ? ? ? ? ? except StopIteration:
? ? ? ? ? ? ? ? coros.remove(coro)


这段代码每次从协程列表里取一个协程执行,如果捕获到 StopIteration 异常,就把这个协程从队列里去掉。


接下来我们把手工调用 send 的代码去掉,代码如下:
c1 = coro1()
c2 = coro2()
run([c1, c2])


综上所述,在 Python 3.5,我们现在可以通过新的 await 和 async 功能很轻松的执行协程。本文的相关代码可以在 github 上找到。


下面关于Python的文章您也可能喜欢,不妨看看:


英文原文:Playing around with await/async in Python 3.5


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python实现控制台中的进度条 下一篇是时候升级你的gulp到4.0了

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: