python - 超过 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() 函数完成,然后池中的一个锁将是空闲的。
这是一回事吗?如果没有,我怎么能实现这样的东西?
这有道理吗?
解决方案
您正在寻找asyncio.Semaphore。
这是一个如何使用它的示例。
推荐阅读
- xml - XSD 和 XML 中的版权注释
- ruby-on-rails - pg.rb 分段错误 [Mojave 升级]
- android - GraphQLHttpFailureDomain - 真实设备上的 Facebook 登录
- python - 用于 Windows 服务的 Python 通配符条目搜索
- php - 如何恢复被 VSCode 损坏的文件?
- python-3.x - 如何使用请求 python 3 登录网站,然后从该网站抓取数据
- go - 如何检查当前本地时间是否为 DST?
- angular - 在 Angular 中,如何区分程序点击和用户点击?
- javascript - 在 VUEX Mutation 中定义多个变量
- ios - 如何在IOS中将HEIC图像转换为JPG图像