Task是asyncio中对协程的封装,用于并发调度和管理。通过asyncio.create_task()创建后自动运行,支持状态查询、结果获取、取消操作及回调绑定,并可结合gather()实现多任务并发执行。

在 Python 中,Task 是对协程的封装,用于实现并发执行。它由 asyncio 库提供,允许你将一个协程调度到事件循环中运行,并对其进行管理,比如追踪执行状态、取消任务等。
Task 包装一个协程,使其自动加入事件循环,在后台运行。相比直接 await 协程,Task 可以并发启动多个任务而不阻塞。
使用 asyncio.create_task() 来创建 Task:
立即学习“Python免费学习笔记(深入)”;
import asyncio <p>async def say_hello(delay, msg): await asyncio.sleep(delay) print(msg)</p><p>async def main():</p><h1>创建两个任务,并发执行</h1><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">task1 = asyncio.create_task(say_hello(1, "Hello")) task2 = asyncio.create_task(say_hello(2, "World")) # 等待任务完成 await task1 await task2
asyncio.run(main())
Task 提供了多种方法来检查和控制协程的执行过程。
task.done():判断任务是否已完成task.result():获取任务返回值(需任务已完成)task.cancel():主动取消任务task.add_done_callback(callback):任务完成后调用回调函数
立即学习“Python免费学习笔记(深入)”;
async def slow_task():
await asyncio.sleep(2)
return "完成"
<p>async def main():
task = asyncio.create_task(slow_task())</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;"># 可以检查状态
print("任务完成了吗?", task.done()) # False
result = await task
print("结果:", result)
print("任务完成了吗?", task.done()) # True可以使用 asyncio.gather() 或 asyncio.wait() 同时处理多个 Task。
gather() 更常用,能按顺序返回结果wait() 返回完成和未完成的任务集合立即学习“Python免费学习笔记(深入)”;
async def main():
tasks = [
asyncio.create_task(say_hello(1, "A")),
asyncio.create_task(say_hello(2, "B")),
]
<pre class="brush:php;toolbar:false;"><code>await asyncio.gather(*tasks)基本上就这些。Task 让协程不只是“可等待对象”,而是可调度、可管理的执行单元,是构建高效异步程序的核心工具。
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号