asyncio.as_completed 是如何工作的

python

1个回答

写回答

asqw15963

2025-06-15 04:35

+ 关注

Python
Python

asyncio.as_completed 是如何工作的

asyncio.as_completed 是一个异步函数,它用于迭代一个可迭代对象中的 Future 对象,返回一个协程对象的迭代器。它可以用于获取一组异步任务的结果,一旦有任务完成,它就会返回该任务的结果。

在使用 asyncio.as_completed 时,我们首先需要创建一组协程对象,这些协程对象代表一组异步任务。然后,我们可以使用 asyncio.as_completed 对这组协程进行遍历,以获取它们的结果。

当遍历 asyncio.as_completed 返回的迭代器时,它会阻塞当前协程,直到有一个协程对象完成。一旦有协程对象完成,它就会返回该协程对象的结果,并继续等待下一个协程对象的完成。

以下是一个简单的案例代码,展示了 asyncio.as_completed 的使用方法:

Python

import asyncio

async def task(name, delay):

print(f'Task {name} started')

awAIt asyncio.sleep(delay)

print(f'Task {name} completed')

return name

async def mAIn():

tasks = [

task('A', 2),

task('B', 1),

task('C', 3)

]

for coro in asyncio.as_completed(tasks):

result = awAIt coro

print(f'Result: {result}')

asyncio.run(mAIn())

在上面的代码中,我们定义了一个名为 task 的协程函数,它接受一个任务名称和延迟时间作为参数。这个协程函数会打印任务的开始和完成信息,并在延迟时间结束后返回任务名称。

在 mAIn 函数中,我们创建了三个协程对象,分别代表三个异步任务。然后,我们使用 asyncio.as_completed 对这组协程进行遍历,并打印每个任务的结果。

当我们运行上述代码时,它会按照任务的延迟时间顺序输出任务的开始和完成信息,并打印任务的结果。

使用 asyncio.as_completed 可以方便地获取一组异步任务的结果。它返回一个协程对象的迭代器,并在任务完成时返回结果。通过遍历这个迭代器,我们可以按照任务完成的顺序获取每个任务的结果,从而实现对异步任务的处理和管理。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号