【问题标题】:lock an asyncio function when more than 100 are running?超过 100 个运行时锁定 asyncio 函数?
【发布时间】:2020-01-19 16:20:46
【问题描述】:

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

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() 函数完成,然后池中的一个锁将是空闲的。

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

这有意义吗?

【问题讨论】:

标签: python python-asyncio


【解决方案1】:

您正在寻找asyncio.Semaphore

这里是an example如何使用它。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2018-11-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多