2023-04-30 17:44:51 Cyberbolt
AIOPools 是 Python AsyncIO Semaphore 的包装器,用于构建 AsyncIO 协程池。类似于 concurrent.futures 的 ThreadPoolExecutor (线程池) 和 ProcessPoolExecutor (进程池),旨在使 Python 代码达到最高并发数。
环境要求:Python 3.8 及以上
1.进入命令窗口,创建虚拟环境,依次输入以下命令
Linux 和 macOS:
python3 -m venv venv # 创建虚拟环境
. venv/bin/activate # 激活虚拟环境
Windows:
python -m venv venv # 创建虚拟环境
venv\Scripts\activate # 激活虚拟环境
2.安装 AIOPools,依次输入
pip install --upgrade pip
pip install aiopools
'''
该示例的协程任务数总计 100 个,设置最大允许的协程数 maxio 为 20,则需要运行 5 次才能完成。
'''
import asyncio
from aiopools import AsyncPool
async def block_io(i):
await asyncio.sleep(1)
print(i)
return i
async def main():
# 设置最大允许的协程数 maxio
async with AsyncPool(maxio=20) as pool:
tasks = [pool.create_task(block_io(i)) for i in range(100)]
response = await asyncio.gather(*tasks)
print(response)
if __name__ == '__main__':
asyncio.run(main())