asyncio
是 Python 3.4 引入的一个库,用于编写并发代码,使用异步 I/O 操作。它基于事件循环(event loop)的概念,允许你编写单线程并发代码,通过协程(coroutines)实现非阻塞的 I/O 操作。
asyncio
主要涉及以下几种类型:
async def
定义的函数。asyncio
适用于需要处理大量 I/O 操作的场景,例如:
假设我们有一个字典列表,需要异步地处理每个字典并返回结果。
import asyncio
async def process_dict(d):
# 模拟异步操作,例如网络请求或数据库查询
await asyncio.sleep(1)
return {**d, 'processed': True}
async def main():
dicts = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'},
{'id': 3, 'name': 'Charlie'}
]
# 创建任务列表
tasks = [process_dict(d) for d in dicts]
# 并发执行任务并等待结果
results = await asyncio.gather(*tasks)
print(results)
# 运行事件循环
asyncio.run(main())
asyncio.gather
会抛出 CancelledError
?原因:CancelledError
通常是由于事件循环被取消或关闭导致的。
解决方法:
通过以上方法,可以更好地理解和处理 asyncio
中的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云