当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python asyncio.Semaphore用法及代码示例


用法:

class asyncio.Semaphore(value=1)

一个信号量对象。不是线程安全的。

信号量管理一个内部计数器,该计数器由每个acquire() 调用递减,并由每个release() 调用递增。计数器永远不会低于零;当 acquire() 发现它为零时,它会阻塞,等待某些任务调用 release()

可选的value 参数给出内部计数器的初始值(默认为1)。如果给定值小于 0,则会引发 ValueError

在 3.10 版中更改:删除了loop范围。

使用信号量的首选方法是 async with 语句:

sem = asyncio.Semaphore(10)

# ... later
async with sem:
    # work with shared resource

这相当于:

sem = asyncio.Semaphore(10)

# ... later
await sem.acquire()
try:
    # work with shared resource
finally:
    sem.release()

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 asyncio.Semaphore。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。