import asyncio
# 限制并发数为10
sem = asyncio.Semaphore(10)
# 定义一个协程
async def work(s):
# 休眠1秒 await必须在async中使用
await asyncio.sleep(1)
async with sem:
print(s)
# 任务列表
# work函数并不会执行,只是添加了10个任务,需要在loop中才执行
tasks = [work(i) for i in range(10)]
# 获取循环对象
loop = asyncio.get_event_loop()
# 直到所有完成才会结束,否则阻塞,*tasks是列表展开
loop.run_until_complete(asyncio.gather(*tasks))
# 等待run完毕,才会打印end
print('end')