asyncio 可以指定协程的数量吗?

2017-01-25 05:13:13 +08:00
 soratadori
举个例子,有一个列表[1,2,3,……,m]

如何让他一次“同时”输出 n 个?

比如
1
1
1

2
2
2

3
3
3

4
4
4

5
5
5

下面这个要输出几次,就创建几个实例的写法感觉太笨了,也不好维护,有没有灵活的方法?
当然,这个例子有点傻,因为执行过的没必要再执行一次。实际情况应该是如何根据队列灵活的调整执行速度。
import asyncio

li = [1,2,3,4,5,6,7,8,9,10]

def hello():
    for i in li:
        print(str(i)+"\n")

async def main():
    loop = asyncio.get_event_loop()
    future1 = loop.run_in_executor(None, hello)
    future2 = loop.run_in_executor(None, hello)
    future3 = loop.run_in_executor(None, hello)
    await future1
    await future2
    await future3

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
2525 次点击
所在节点    Python
2 条回复
Septembers
2017-01-25 06:11:25 +08:00
令牌桶?
Lemon23
2017-02-09 15:55:53 +08:00
楼主后来怎么解决的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/336798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX