当前位置: 首页> 教育> 大学 > 美团推广联盟_湖南长沙发掘了3座西汉时期墓葬_seo公司 彼亿营销_广告搜索引擎

美团推广联盟_湖南长沙发掘了3座西汉时期墓葬_seo公司 彼亿营销_广告搜索引擎

时间:2025/7/11 18:08:15来源:https://blog.csdn.net/engchina/article/details/144162578 浏览次数:0次
美团推广联盟_湖南长沙发掘了3座西汉时期墓葬_seo公司 彼亿营销_广告搜索引擎

`asyncio.wait` 和 `asyncio.gather` 的区别

        • 1. `asyncio.wait`
        • 2. `asyncio.gather`
        • 主要区别
        • 总结

在Python的异步编程中,asyncio.waitasyncio.gather 都是用于等待多个异步任务完成的工具,但它们在功能和使用方式上有一些关键的区别。本文将详细解释这两个函数的不同之处。

1. asyncio.wait

asyncio.wait 是一个低级别的API,用于等待一组任务完成。它返回两个集合:已完成的任务和未完成的任务。

语法:

done, pending = await asyncio.wait(tasks, timeout=None, return_when=asyncio.ALL_COMPLETED)

参数:

  • tasks:一个包含异步任务的可迭代对象。
  • timeout:可选参数,指定等待的最大时间(秒)。如果超时,未完成的任务将包含在pending中。
  • return_when:指定何时返回结果。可以是以下值之一:
    • asyncio.ALL_COMPLETED:等待所有任务完成(默认)。
    • asyncio.FIRST_COMPLETED:等待第一个任务完成。
    • asyncio.FIRST_EXCEPTION:等待第一个引发异常的任务。

返回值:

  • done:一个集合,包含所有已完成的任务。
  • pending:一个集合,包含所有未完成的任务(如果超时)。

示例:

import asyncioasync def func():print(1)await asyncio.sleep(2)print(2)return "返回值"async def main():task_list = [asyncio.create_task(func()),asyncio.create_task(func())]done, pending = await asyncio.wait(task_list)for task in done:print(task.result())asyncio.run(main())
2. asyncio.gather

asyncio.gather 是一个更高级别的API,用于并发运行多个异步任务,并返回它们的结果列表。它等待所有任务完成,并返回一个包含所有结果的列表。

语法:

results = await asyncio.gather(*tasks, return_exceptions=False)

参数:

  • *tasks:一个或多个异步任务。
  • return_exceptions:可选参数,指定是否将异常作为结果返回。如果为False(默认),异常会传播到调用者;如果为True,异常会被捕获并作为结果返回。

返回值:

  • results:一个列表,包含所有任务的结果。如果某个任务引发异常且return_exceptions=True,异常对象将作为结果返回。

示例:

import asyncioasync def func():print(1)await asyncio.sleep(2)print(2)return "返回值"async def main():results = await asyncio.gather(func(), func())for result in results:print(result)asyncio.run(main())
主要区别
  1. 返回值格式

    • asyncio.wait 返回两个集合:donepending
    • asyncio.gather 返回一个包含所有任务结果的列表。
  2. 异常处理

    • asyncio.wait 不会自动捕获异常,异常会传播到调用者。
    • asyncio.gather 可以通过设置 return_exceptions=True 来捕获异常并将其作为结果返回。
  3. 使用场景

    • asyncio.wait 适用于需要更细粒度控制任务完成情况的场景,例如需要处理未完成的任务或根据任务完成顺序进行操作。
    • asyncio.gather 适用于简单地等待所有任务完成并获取结果的场景。
总结
  • asyncio.wait:低级别API,返回两个集合(已完成的任务和未完成的任务),适用于需要细粒度控制任务完成情况的场景。
  • asyncio.gather:高级别API,返回一个包含所有任务结果的列表,适用于简单地等待所有任务完成并获取结果的场景。
关键字:美团推广联盟_湖南长沙发掘了3座西汉时期墓葬_seo公司 彼亿营销_广告搜索引擎

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: