【发布时间】:2015-12-29 10:59:28
【问题描述】:
我有两个StreamReader 对象,想循环读取它们。我像这样使用asyncio.wait:
done, pending = await asyncio.wait(
[reader.read(1000), freader.read(1000)],
return_when=asyncio.FIRST_COMPLETED)
现在done.pop() 给了我先完成的未来。问题是我不知道如何找到完成了哪个read() 操作。我尝试将[reader.read(1000), freader.read(1000)] 放入tasks 变量中,并将完成的未来与那些进行比较。但这似乎是不正确的,因为完成的未来不等于任何原始任务。那么我应该如何找到哪个协程完成了呢?
【问题讨论】:
-
您需要从您的呼叫中创建任务并将 那些 传递给
wait- 参见例如this example. -
@jonrsharpe 是的。这样做。谢谢。愿意将其发布为答案吗?
-
很高兴,会做的。
标签: python python-3.x python-asyncio