[asyncio] Обычный способ использования очереди

каждый блог каждый девиз: Вы можете больше, чем вы думаете.
https://blog.csdn.net/weixin_39190382?type=блог

0. Предисловие

asyncio и очередь используют шаблоны

1. Текст

import asyncio

async def worker(queue):
    async with asyncio.Semaphore(5):  # 最多同时运行5个任务
        while not queue.empty():
            task = await queue.get()
            try:
                # 执行任务
                await do_task(task)
            except Exception as e:
                print(f"Task {
      
      task} failed: {
      
      e}")
                # 将任务重新加入队列
                await queue.put(task)

async def main():
    queue = asyncio.Queue(maxsize=100)  # 队列最大长度为100
    for i in range(100):  # 添加100个任务到队列中
        await queue.put(i)
    await asyncio.gather(*[worker(queue) for _ in range(5)])  # 启动5个worker协程

asyncio.run(main())

Примечание: добавьте task_done() в конце

おすすめ

転載: blog.csdn.net/weixin_39190382/article/details/130735835