Task 与并发执行
asyncio.create_task/gather、超时控制、取消任务
Task 与并发执行
asyncio.create_task 启动后台任务,gather 并发等待多个——理解 Task 是高效异步的关键。
学完本章你将: 掌握 create_task/gather、超时控制、取消任务。
Task 并发模式
python
import asyncio
async def worker(n):
await asyncio.sleep(1)
return f"Worker {n} 完成"
async def main():
# 创建多个 Task——立即开始执行
tasks = [asyncio.create_task(worker(i)) for i in range(5)]
# 等待全部完成
results = await asyncio.gather(*tasks)
print(results)
# ['Worker 0 完成', 'Worker 1 完成', ...]
asyncio.run(main())
超时控制
python
async def slow_operation():
await asyncio.sleep(10)
return "太慢了"
async def main():
try:
result = await asyncio.wait_for(
slow_operation(),
timeout=3.0 # 3 秒超时
)
except asyncio.TimeoutError:
print("操作超时!")
asyncio.run(main())
取消任务
python
async def main():
task = asyncio.create_task(slow_operation())
await asyncio.sleep(1)
task.cancel() # 取消任务
try:
await task
except asyncio.CancelledError:
print("任务已被取消")
# 取消多个
tasks = [asyncio.create_task(worker(i)) for i in range(3)]
for t in tasks:
t.cancel()
await asyncio.gather(*tasks, return_exceptions=True)