import asyncio
sem = asyncio.Semaphore(5)
async def work(item):
async with sem:
await asyncio.sleep(0.2)
return item * 10
async def main():
results = await asyncio.gather(*(work(i) for i in range(20)))
print(results[:5])
asyncio.run(main())A standard pattern for APIs, crawlers, and batch processors.