使用 asyncio 實現(xiàn)并發(fā)計算
有 10 個獨立的任務(wù),每個任務(wù)都要執(zhí)行 1-3 秒才能結(jié)束。如果順序執(zhí)行,那么就需要 10-30 秒才能全部完成。能不能在 3 秒內(nèi)完成? 可以使用 Python 的 asyncio 模塊來實現(xiàn)這點。
下面代碼展示了 asyncio 的用法。 match() 函數(shù)需要 delay 秒才能完成, 在 match() 的函數(shù)定義前面加上 async。 在 many_jobs() 函數(shù)中定義一個任務(wù)組(TaskGroup),將 10 個任務(wù)快速加入。最后一行 asyncio.run(many_jobs()) 運行所有的任務(wù)。

在輸出結(jié)果中,可以看到所有的任務(wù)都是在 20:08:08 開始運行的,結(jié)束時間是 20:08:11, 用時 3 秒。?
任務(wù) 1 用時 3秒,所以它不是最先結(jié)束的,最先結(jié)束的是任務(wù) 2, 因為它只用時 1 秒。

問題:如果每個任務(wù)有返回值,如何收集返回值呢?
標簽:asyncio用法