【发布时间】:2018-11-22 06:23:18
【问题描述】:
如何在任务完成后立即处理async 任务列表的结果?
例如,以下内容应显示首先加载的页面:
urls = ['stackoverflow.com', 'google.com']
tasks = [asyncio.create_task(fetch_page(x)) for x in urls]
for page in asyncio.give_me_results_ASAP(tasks):
print(page.url)
由于 google 加载速度更快,我希望将其打印出来:
google.com
stackoverflow.com
【问题讨论】:
-
可能是简单的方法是在获取页面中添加打印?
-
你能解释一下你的优先事项吗?订单对您来说是最重要的还是即时性?如果即时性是主要目标,为什么它是目标?即使牺牲了订单,您是否愿意接受能够更快完成工作的解决方案?
-
@BearBrown 说得好。虽然我想我有某种异步迭代器。 (这样,我可以
tee以线程安全的方式输出结果,但也可以立即处理它们。) -
@user2357112 即时性。订购无关紧要。
标签: python asynchronous