如果我使用异步函数,那么堆栈上方的所有函数也应该是异步的,并且其调用之前应带有await关键字。此示例使用应用程序的多个体系结构层模拟现代程序:
async def func1():
await asyncio.sleep(1)
async def func2():
await func1()
async def func3():
await func2()
async def func4():
await func3()
async def func5():
await func4()
Run Code Online (Sandbox Code Playgroud)
当执行线程遇到“等待”时,它可以切换到另一个协程,这需要用于上下文切换的资源。由于存在大量相互竞争的规则和不同级别的抽象,这些开销可能开始限制整个系统的性能。但是在给出的示例中,仅在一种情况下在线切换上下文是有意义的:
await asyncio.sleep(1)
Run Code Online (Sandbox Code Playgroud)
如何禁止某些异步功能的上下文切换?