首页 > 解决方案 > 超过 100 个运行时锁定 asyncio 函数?

问题描述

这将是一个糟糕的解释,但我不知道该怎么说,所以请多多包涵。我有一个功能:

async def request():
    # this can only be called n times at once

但正如它所说,它一次只能调用 n 次。是否可以有某种对象数量有限的池,所以我可以这样做:

async def request():
    await with poolOfOneHundred.acquire():
        # do something

然后 python 将获取其中的 100 个,然后一旦到达第 101 个,它将在 await with 语句处等待,直到另一个 request() 函数完成,然后池中的一个锁将是空闲的。

这是一回事吗?如果没有,我怎么能实现这样的东西?

这有道理吗?

标签: pythonpython-asyncio

解决方案


您正在寻找asyncio.Semaphore

这是一个如何使用它的示例。


推荐阅读