async def main(): sem = asyncio.Semaphore(2) async def worker(i): async with sem: await asyncio.sleep(0.1) return i return await asyncio.gather(*(worker(i) for i in range(4))) print(asyncio.run(main()))