欢迎光临散文网 会员登陆 & 注册

使用 asyncio 实现并发计算

2023-07-31 20:31 作者:Mr蓝珲  | 我要投稿

有 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 秒。


所有的任务都在同一时间开始执行,不需要等待前面一个完成,因为所有的任务都是独立的


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


使用 asyncio 实现并发计算的评论 (共 条)

分享到微博请遵守国家法律