Python自从2.5版本引入协程以来,一直是异步编程的良好选择。在Python 3.4中,Asyncio才正式引入协程,这是标准库最重要的更新之一。
# Asyncio示例代码 import asyncio async def main(): print('Hello') await asyncio.sleep(1) print('World') asyncio.run(main())
Python 3.7改进了Asyncio,使得使用它更加简单易用。新的Asyncio特性包括:Context Variables、Create_Subprocess_Exec、Protocol Factory和Task Local Storage(TLS)。
# Task Local Storage(TLS)示例代码 import asyncio import contextvars async def worker(): request_id = contextvars.ContextVar('request_id') request_id.set(123) await asyncio.sleep(0.1) print('request_id =', request_id.get()) async def main(): await asyncio.gather(worker(), worker()) asyncio.run(main())
除此之外,Python 3.7还带来了新的异步库async-timeout,可以用于设置超时时间,避免异步任务无限阻塞。
# async-timeout示例代码 import asyncio import async_timeout async def slow_operation(): # 模拟耗时操作 await asyncio.sleep(10) async def main(): try: async with async_timeout.timeout(5): await slow_operation() except asyncio.TimeoutError: print('Timeout!') asyncio.run(main())
Python 3.7的Asyncio改进给异步编程带来了更好的体验和可维护性,使得使用协程的异步编程更加轻松。
上一篇 python3。7注册
下一篇 python3。7新特性