python中协程池的使用
时间: 2024-04-30 07:19:48 浏览: 124
python线程池如何使用
在Python中使用协程池可以提高并发执行效率,下面是一个简单的协程池使用示例:
```python
import asyncio
async def worker():
print('Starting worker...')
await asyncio.sleep(2)
print('Worker finished.')
async def main():
tasks = []
for i in range(5):
tasks.append(asyncio.create_task(worker()))
# 创建一个协程池并指定最大并发数
pool = asyncio.Semaphore(2)
# 将任务放入协程池中执行
async with pool:
await asyncio.gather(*tasks)
asyncio.run(main())
```
在上面的示例中,我们首先定义了一个 `worker` 协程函数,该函数模拟了一个耗时的操作,然后我们创建了 5 个 `worker` 协程任务。
接下来,我们使用 `asyncio.Semaphore` 创建了一个协程池,并指定最大并发数为 2。然后,我们使用 `async with pool:` 将任务放入协程池中执行,并使用 `asyncio.gather` 等待所有任务完成。
这样就实现了一个简单的协程池。在实际应用中,我们可以根据需要调整最大并发数,并使用 `asyncio.create_task` 创建更多的协程任务放入协程池中执行。
阅读全文