python3.6协程出现乱序
代码如下
import asyncio
async def Test(name):
for n in range(5):
print (name, " before ", n)
await asyncio.sleep(1)
print (name, n, " after ")
loop = asyncio.get_event_loop()
tasks = [Test(n) for n in list('abcdefghijklm')]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
照理说协程不是应该按顺序执行的吗?我对协程的理解是,代码运行到await asyncio.sleep(1)
时候出现了IO阻塞(假设),这时候解释器就会扭头去执行Test('b')
丫,Test('c')
等接下来的都如此,然后等到阻塞结束后,才会去after
那一句代码。就是说,所有的一切都应该是按顺序执行的丫。可是为什么会出现下面的结果呢?
这是刚启动时的输出
这是结束时的输出
为什么输出结果都是乱序的丫???谢谢大家了。用的是ipython,如果用python自带的,输出会更加乱序。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
协程中的执行顺序是不确定
https://stackoverflow.com/que...