gen.multi方法怎样算结束?

来源:4-9 tornado实现高并发的爬虫

烈焰卡卡

2019-06-05

workers = gen.multi([worker() for _ in range(concurrency)])

这一行代码是等待所有并行运行的协程全部结束后才会继续向下执行么?那么此时还没有向队列中发送None的消息,应该所有协程还在等待从队列中取出数据,协程也不应该结束,那代码不就会永远在这里等待么?

写回答

2回答

胖虎dad

2019-12-17

asyncio.gather并不会添加到事件循环中,只是相当于一个协程列表。asyncio.ensure_future这种才会将协程添加至事件循环中。

0
1
胖虎dad
好吧,gather也可以,但是wait不行
2019-12-18
共1条回复

烈焰卡卡

提问者

2019-06-05

理解了……方法类似asyncio中的gather方法,在当前循环中加入协程,直接运行到下一行,其中协程与总的事件循环一起运行

0
1
bobby
是的,
2019-06-06
共1条回复

Tornado从入门到进阶 打造支持高并发的技术论坛

异步IO并发编程/Form,ORM/aiomysql、peewee-async/epoll

593 学习 · 350 问题

查看课程