Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
Sul nostro profilo Instagram abbiamo pubblicato alcuni dei "derby" più interessanti tra i candidati all'Europarlamento. Quale risultato vi stupisce di più?
#maratonaYoutrend
🤺https://www.instagram.com/p/C8CCuZ3Cye7
Tra gli under 30, secondo il nostro Instant poll per Sky TG24, si contendono il primo posto i tre partiti del "campo largo", con il PD davanti al 18%, e a seguire M5S (17%) e AVS (16%). Fratelli d'Italia si ferma al 14%.
#maratonaYoutrend
🔴 Elezioni in Grecia
Secondo gli Exit Poll per la tv pubblica ERT News, il partito di centrodestra Nea Demokratia del premier uscente Mitsotakis supera le aspettative della vigilia, staccando Syriza (SX) di 11 punti percentuali. Potrebbe comunque non bastare per formare un governo, vista la nuova legge elettorale proporzionale con soglia di sbarramento al 3%.
Nea Democratia (CDX) 36-40% - 121-125 seggi
Syriza (SX) 25-29% - 86-89 seggi
Pasok (CSX) 9,5-12,5% - 35-36 seggi
KKE (SX) 6-8% - 22-23 seggi
EL (CDX) 3,5-5,5% - 15 seggi
MeRa25 (SX) 2,5-4,5% - 11-12 seggi
Plefsi Eleftherias (SX) 2,2-4,2% - 0-10 seggi
Altri 4,8-6,8%
Segui la nostra #MaratonaYoutrend su Twitter: https://twitter.com/you_trend/
EDIT: Alle 22:15 con il 90% dei voti scrutinati è netta la vittoria di Nea Demokratia, del premier uscente di centrodestra Mitsotakis.
Qui il nostro riepilogo:
https://twitter.com/you_trend/status/1660378693582086144
Una tabella riassuntiva dei seggi finora stimati per il prossimo Parlamento e la rappresentazione in grafica della maggioranza del Centrodestra negli emicicli di Camera e Senato!
#MaratonaYouTrend
La mappa della variazione dell'affluenza per comune alle 19 rispetto alle elezioni politiche del 2018 e le europee del 2019.
👉 Segui la #MaratonaYouTrend anche su Twitter: https://twitter.com/you_trend
🇺🇸USA: domani notte #MaratonaYouTrend sui due ballottaggi in Georgia!
➡️ Tutto quello che c'è da sapere su queste sfide decisive per gli equilibri del nuovo Senato lo trovate in questo articolo:
https://www.youtrend.it/2021/01/04/usa-2020-dalla-georgia-passa-il-controllo-del-senato/