python 从列中中取任务 异步执行 案例
时间: 2024-02-11 08:06:16 浏览: 54
下面是一个使用异步执行方式从列中取任务并执行的 Python 代码示例:
```python
import asyncio
async def worker(task):
# 这里是任务执行的代码逻辑,例如执行一个 HTTP 请求等
print(f"Processing task: {task}")
await asyncio.sleep(1)
print(f"Task {task} done")
async def main():
# 定义一个任务队列
task_queue = asyncio.Queue()
# 往任务队列中添加任务
for i in range(10):
await task_queue.put(i)
# 定义一个协程池,最多同时执行 3 个协程
workers = [asyncio.create_task(worker(task_queue)) for _ in range(3)]
# 等待所有协程执行完成
await asyncio.gather(*workers)
asyncio.run(main())
```
在上面的代码中,我们通过 `asyncio.Queue` 来实现了一个任务队列,往队列中添加了 10 个任务。然后,我们定义了一个 `worker` 协程函数,用来执行任务。在 `main` 函数中,我们创建了一个协程池,最多同时执行 3 个协程。最后,我们使用 `asyncio.gather` 等待所有协程执行完成。
在执行上面的代码时,你会发现三个任务会同时执行,直到其中一个任务执行完成后,才会有新的任务被执行。这就是异步执行的特点,可以充分利用 CPU 和 IO 资源,提高程序效率。
阅读全文