面试题答案
一键面试协程概念
协程是一种轻量级的异步编程模型,它允许在一个线程内暂停和恢复执行函数,实现非阻塞的并发操作。与线程和进程相比,协程的切换开销更小,因为它是由用户空间而非操作系统内核来管理调度的。在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())
- 首先,使用
async def
定义了一个协程函数fetch_data
,在这个函数中使用await asyncio.sleep(2)
模拟了网络获取数据的延迟操作。 - 然后,在
main
协程函数中,使用asyncio.create_task
创建了一个异步任务task
,该任务执行fetch_data
协程。 - 使用
await task
等待任务完成,并获取返回的数据result
。 - 最后,使用
asyncio.run
运行main
协程,从而启动整个异步任务。