当使用 asyncio.create_task(function1) 和 asyncio.create_task(function2) 时,你正在创建两个将在同一个事件循环中并发运行的异步任务。这些任务运行是否高效取决于它们本身的性质。
理解异步任务
如果 function1 和 function2 是异步函数(即,它们使用了 async def 并包含 await 语句),只要这些函数执行的是非阻塞操作,比如:
- 网络 I/O
- 磁盘 I/O
- 定时器(例如
await asyncio.sleep()) - 其他异步操作
在这种情况下,asyncio 会处理调度,在任务等待 I/O 操作完成时暂停它们,并在操作就绪时恢复它们。这就实现了高效的并发。
阻塞代码的低效性
如果 function1 和 function2 包含阻塞操作(例如 CPU 密集型任务,time.sleep() 或阻塞 I/O),它们将无法高效运行。阻塞代码会阻塞整个事件循环,防止其他任务并发运行。
高效异步任务示例
以下是一个使用 asyncio.create_task() 高效运行非阻塞异步任务的示例:
import asyncio
async def function1():
print('Function 1: Start')
await asyncio.sleep(2) # 模拟非阻塞 I/O
print('F

最低0.47元/天 解锁文章
589






