Ich versuche faire Warteschlangen in meiner Bibliothek zu implementieren, die auf asyncio basiert.Ist asyncio.wait Auftrag garantiert?
In einigen Funktion habe ich eine Aussage wie (unter der Annahme socketX
sind Aufgaben):
done, pending = asyncio.wait(
[socket1, socket2, socket3],
return_when=asyncio.FIRST_COMPLETED,
)
Nun lese ich in der Dokumentation zu asyncio.wait
viele Male, aber es enthält nicht die Informationen, die ich bin nach. Vor allem würde ich gerne wissen, ob:
socket1
,socket2
undsocket3
geschahen schon bereit sein, wenn ich den Anruf erteilen. Ist es garantiert, dassdone
sie alle enthält oder könnte es sein, dass es nur einen (oder zwei) zurückgibt?- Ist im zweiten Fall die Reihenfolge der Tasks, die an
wait()
übergeben wurden, von Bedeutung?
Ich versuche, zu behaupten, wenn ich nur fair-Warteschlangen in dem Satz von done
Aufgaben anwenden kann (durch eine und verlassen die anderen Aufgaben für die spätere Auflösung Kommissionierung) oder wenn ich auch über den Auftrag zu kümmern brauche ich übergeben Sie die Aufgaben in.
Die Dokumentation ist etwas still darüber. Irgendeine Idee ?
Ich habe versucht, dass auch, aber es mir nicht Quellcode Python auftreten zu überprüfen. Nicht genug Schlaf, denke ich. Vielen Dank, dass du es an deiner Seite ausprobiert hast. Ich denke, wir können daraus schließen, dass es keine Garantie dafür gibt, dass es sich immer so verhält, sondern dass die aktuelle Implementierung dies auf allen Plattformen tut. – ereOn