我现在有一个for循环,如下所示
async def process(tasks, num):
count = 0
results = []
for task in tasks:
if count >= num:
break
result = await some_async_task(task)
if result == 'foo':
continue
results.append(result)
count+=1
我想知道我能不能在这里用“收集”或“等待”。但我不知道如何在那里实现这些if逻辑?就像。。如果count>;=num,我不想不必要地等待任务。 如果有20个任务并且num=4,那么我不想运行全部20个任务。你知道吗
使用aiostream library可以很容易地实现这一点。下面是一个工作示例:
程序将打印成功的前10个任务的列表:
还请注意,可以使用
task_limit
参数调整可以同时运行的some_async_task
的数量。你知道吗免责声明:我是项目维护者。
您可以批量处理任务,其大小等于您仍然需要的结果数。如果您将这样的批处理交给
asyncio.gather()
,它将同时运行它们并保持结果的顺序。例如:相关问题 更多 >
编程相关推荐