小编Kon*_*vin的帖子

异步任务池

我的队列中有一个任务池,希望从拉取输出结果中完成任务并放入新任务。这是正确的方法吗?我定期检查是否有任务完成。像这样创建任务task = asyncio.create_task(...)是异步的吗?(如果我们创建大量更复杂的任务,它会阻塞循环吗)?

import asyncio
from collections import deque
from random import randint


async def show_result(q):
    while True:
        done_task = await q.get()
        result = done_task.result()
        print(result)
        q.task_done()



async def some_work(n, delay):
    await asyncio.sleep(delay)
    return f'task {n} with delay: {delay} completed'


async def tasks_worker(q, pool_size):
    """
    extract done tasks and put new
    """

    delay = get_task_param()
    tasks = deque([])

    while True:
        await asyncio.sleep(1)
        # append new tasks
        tasks_to_add = pool_size - len(tasks)
        print(f"tasks_to_add: {tasks_to_add}")
        if tasks_to_add > 0:
            # …
Run Code Online (Sandbox Code Playgroud)

python-3.x python-asyncio

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

python-3.x ×1

python-asyncio ×1