當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。