使用 asyncio 实现并发计算
有 10 个独立的任务,每个任务都要执行 1-3 秒才能结束。如果顺序执行,那么就需要 10-30 秒才能全部完成。能不能在 3 秒内完成? 可以使用 Python 的 asyncio 模块来实现这点。
下面代码展示了 asyncio 的用法。 match() 函数需要 delay 秒才能完成, 在 match() 的函数定义前面加上 async。 在 many_jobs() 函数中定义一个任务组(TaskGroup),将 10 个任务快速加入。最后一行 asyncio.run(many_jobs()) 运行所有的任务。

在输出结果中,可以看到所有的任务都是在 20:08:08 开始运行的,结束时间是 20:08:11, 用时 3 秒。
任务 1 用时 3秒,所以它不是最先结束的,最先结束的是任务 2, 因为它只用时 1 秒。

问题:如果每个任务有返回值,如何收集返回值呢?