我什么时候应该在Python中使用async/await?

问题描述 投票:0回答:1

元上下文:

我正在使用 aiohttp 构建一个 api。由于它是一个异步框架,因此我必须使用 async 来定义处理程序。示例:

async def index_handler(request):
    return web.Response(text="Hello, world")

app = web.Application()
app.router.add_route("GET", "/", index_handler)

代码上下文:

在开发过程中,我发现自己处于这样的情况:嵌套函数调用:

def bar():
    return "Hi"

async def foo():
    return bar()

await foo()

当我考虑性能时,我不知道是否应该将这些嵌套函数也全部异步执行。示例:

async def bar()
    return "Hi"

async def foo():
    return await bar()

await foo()

问题:

进行嵌套函数调用以优化性能的最佳方法是什么?始终使用异步/等待还是始终使用同步?这有什么区别吗?

python-3.x performance asynchronous
1个回答
1
投票

在您的情况下,您不需要异步所有内容,除非您的代码可能会阻止某些事情,例如:

def bar():
    """This function is not async because there is no need to."""
    return "Hi"

async def foo():
    return bar()

await foo()

但是,如果您的功能栏例如休眠或在内部执行一些异步功能,那么您应该异步该功能

async def bar():
    """This function needs to be async because there 
    are operations that potentially could block"""
    await asyncio.sleep(1)
    return "Hi"

async def foo():
    return bar()

await foo()

总而言之,如果您正在使用异步操作,您需要非常清楚地了解程序如何运行以及它在做什么,以避免到处都使用异步操作。

© www.soinside.com 2019 - 2024. All rights reserved.