MST

星途 面试题库

面试题:Python函数多返回值与协程的结合应用

假设你正在开发一个高并发的网络爬虫程序,需要在协程中使用函数的多返回值,一个返回值是爬取到的数据,另一个返回值是本次爬取的状态信息(如成功、失败、重试等)。请设计一个完整的Python代码示例,展示如何实现这种结合,并处理可能出现的异常情况。
46.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import asyncio


async def fetch_data():
    try:
        # 模拟爬取数据的操作,这里用异步睡眠来模拟耗时操作
        await asyncio.sleep(1)
        # 模拟爬取成功返回数据和成功状态
        return "爬取到的数据", "成功"
    except Exception as e:
        # 模拟爬取失败返回空数据和失败状态
        return None, f"失败: {str(e)}"


async def main():
    tasks = []
    for _ in range(3):
        task = asyncio.create_task(fetch_data())
        tasks.append(task)

    results = await asyncio.gather(*tasks)
    for data, status in results:
        print(f"数据: {data}, 状态: {status}")


if __name__ == "__main__":
    asyncio.run(main())