我的队列中有一个任务池,希望从拉取输出结果中完成任务并放入新任务。这是正确的方法吗?我定期检查是否有任务完成。像这样创建任务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)