推荐答案
在 Python 中,可以使用 asyncio 模块来执行异步任务。以下是一个简单的示例,展示如何创建和执行异步任务:
// www.javascriptcn.com code example
import asyncio
async def my_task():
print("Task started")
await asyncio.sleep(1)
print("Task completed")
async def main():
# 创建任务
task = asyncio.create_task(my_task())
# 等待任务完成
await task
# 运行主函数
asyncio.run(main())在这个示例中,my_task 是一个异步函数,asyncio.create_task() 用于创建一个任务,await 用于等待任务完成。
本题详细解读
1. asyncio 模块
asyncio 是 Python 标准库中的一个模块,用于编写单线程并发代码,通常用于 I/O 密集型任务。它提供了事件循环、协程、任务等工具来管理异步任务。
2. 异步函数
异步函数使用 async def 定义,函数内部可以使用 await 关键字来暂停函数的执行,直到等待的操作完成。例如,await asyncio.sleep(1) 会让函数暂停 1 秒钟。
3. 创建任务
asyncio.create_task() 用于将一个协程包装成一个任务(Task 对象)。任务是一个更高级别的抽象,它允许你在事件循环中并发地运行多个协程。
4. 等待任务
使用 await 关键字可以等待一个任务完成。在 main 函数中,await task 会等待 my_task 任务完成后再继续执行。
5. 运行事件循环
asyncio.run() 是 Python 3.7 引入的一个方便的函数,用于运行一个异步函数并管理事件循环。它会自动创建事件循环,运行传入的协程,并在完成后关闭事件循环。
6. 并发执行多个任务
你可以创建多个任务并并发地执行它们。例如:
async def main():
task1 = asyncio.create_task(my_task())
task2 = asyncio.create_task(my_task())
await task1
await task2在这个例子中,task1 和 task2 会并发执行,await task1 和 await task2 会等待它们分别完成。
7. 任务取消
你可以使用 task.cancel() 来取消一个任务。取消任务会引发 asyncio.CancelledError 异常,你可以在任务中捕获这个异常来执行清理操作。
// www.javascriptcn.com code example
async def my_task():
try:
print("Task started")
await asyncio.sleep(1)
print("Task completed")
except asyncio.CancelledError:
print("Task cancelled")
async def main():
task = asyncio.create_task(my_task())
await asyncio.sleep(0.5)
task.cancel()
await task
asyncio.run(main())在这个例子中,任务会在 0.5 秒后被取消,并输出 "Task cancelled"。