Semaphore شمارندهای برای محدود کردن تعداد کارهایی است که میتوانند همزمان به یک منبع دسترسی داشته باشند.
کجا استفاده میشود؟
برای محدود کردن تعداد درخواست همزمان به API خارجی میتوان Semaphore با ظرفیت پنج تعریف کرد.
اشتباه رایج
Semaphore و Mutex تفاوت دارند. انتخاب باید بر اساس تعداد ورود مجاز و مدل مالکیت Lock باشد.
محدود کردن همزمانی در پایتون
import asyncio
limit = asyncio.Semaphore(3)
async def fetch_one(url):
async with limit:
return await request(url)
سمافور شمارندهای برای کنترل تعداد عملیات همزمان است. برخلاف میوتکس که معمولاً دسترسی انحصاری میدهد، سمافور میتواند چند مجوز همزمان داشته باشد.