Ich habe zwei StreamReader
Objekte und möchte von ihnen in einer Schleife lesen. Ich verwende asyncio.wait
wie folgt aus:Wie Sie wissen, welche Coroutinen wurden mit asyncio.wait()
done, pending = await asyncio.wait(
[reader.read(1000), freader.read(1000)],
return_when=asyncio.FIRST_COMPLETED)
Jetzt done.pop()
gibt mir die Zukunft, die zuerst fertig. Das Problem ist, ich weiß nicht, wie man die Operation read()
abgeschlossen findet. Ich habe versucht [reader.read(1000), freader.read(1000)]
in eine tasks
Variable zu setzen und die fertige Zukunft mit diesen zu vergleichen. Dies scheint jedoch falsch zu sein, da die fertig gestellte Zukunft keiner der ursprünglichen Aufgaben entspricht. Wie soll ich herausfinden, welche Coroutine fertig war?
Sie müssen Aufgaben von Ihren Anrufen erstellen und * diese * an 'wait' übergeben - siehe z. [dieses Beispiel] (https://websockets.readthedocs.org/en/stable/intro.html#both). – jonrsharpe
@jonrsharpe Ja. Das tut es. Vielen Dank. Möchten Sie das als Antwort posten? – Elektito
Jolly gut, werde ich tun. – jonrsharpe