MST

星途 面试题库

面试题:网络编程之Python协程与asyncio基础使用

请简述Python中协程的概念,并说明如何使用asyncio库创建一个简单的异步任务,该任务模拟从网络获取数据并打印出来。
25.5万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

协程概念

协程是一种轻量级的异步编程模型,它允许在一个线程内暂停和恢复执行函数,实现非阻塞的并发操作。与线程和进程相比,协程的切换开销更小,因为它是由用户空间而非操作系统内核来管理调度的。在Python中,协程通过 async/await 语法来实现,async 用于定义一个异步函数(协程函数),await 用于暂停协程的执行,等待一个可等待对象(如另一个协程)完成。

使用asyncio库创建简单异步任务

import asyncio


async def fetch_data():
    # 模拟网络延迟
    await asyncio.sleep(2)
    data = "模拟从网络获取的数据"
    return data


async def main():
    task = asyncio.create_task(fetch_data())
    result = await task
    print(result)


if __name__ == "__main__":
    asyncio.run(main())
  1. 首先,使用 async def 定义了一个协程函数 fetch_data,在这个函数中使用 await asyncio.sleep(2) 模拟了网络获取数据的延迟操作。
  2. 然后,在 main 协程函数中,使用 asyncio.create_task 创建了一个异步任务 task,该任务执行 fetch_data 协程。
  3. 使用 await task 等待任务完成,并获取返回的数据 result
  4. 最后,使用 asyncio.run 运行 main 协程,从而启动整个异步任务。