Функция 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
#TMK#Journal
🌎TMK – iqtisodiyotning yuragi urayotgan nuqtada
🖥Ba’zan birgina sahifa ortida butun bir sohaning yutuqlari, kelajak rejalarining xaritasi yashiringan bo‘ladi. Bugun biz aynan shunday yangilik bilan o‘rtoqlashamiz:
📰“Iqtisodiy sharh” jurnalining navbatdagi sonida O‘zbekiston texnologik metallar kombinati faoliyati, xalqaro bozorga chiqishdagi qadamlarimiz va yangi imkoniyatlarimiz haqida maqolalar chop etildi.
⚡️Bu nafaqat sanoat, balki xalqaro maydondagi O‘zbekiston nomi uchun ham muhim bosqich.
Har bir satr – kelajak sari intilishimizning isboti.
🔹🔹🔹
🌎TMK — в точке, где бьется сердце экономики
🖥Иногда за одной страницей скрывается карта достижений и планов на будущее целой отрасли. Сегодня мы делимся именно такой новостью:
📰В очередном номере журнала "Экономическое обозрение" были опубликованы статьи о деятельности Узбекского комбината технологических металлов, наших шагах по выходу на международный рынок и новых возможностях.
⚡️Это важный этап не только для промышленности, но и для имени Узбекистана на международной арене. Каждая строка - доказательство нашего стремления к будущему.
🗄🗄🗄🗄
✅TMK matbuot xizmati
🌐Web-site|🔵Facebook |📷Instagram| 🎰LinkedIn|🎬Youtube|🚀Telegram
💲🇺🇸🇯🇵Le journal de bord du capitaine Robert Lewis, copilote du bombardier américain B-29 Enola Gay qui avait largué une bombe atomique sur Hiroshima en 1945, a été mis en vente pour près d'un million de dollars, rapporte le Washington Post.
Le carnet contenant les notes de Robert Lewis, qu'il a prises pendant et après le bombardement, a été mis en vente par le marchand californien de livres rares Dan Whitmore. Le prix demandé est de 950.000 dollars. Il est noté que le journal contient notamment sa célèbre phrase "Mon Dieu, qu'avons-nous fait".
C'est la cinquième fois que le carnet est mis en vente. Il a été vendu pour la première fois aux enchères en 1971 pour 37.000 dollars. La dernière vente a eu lieu en 2022, le montant de la transaction s'élevait alors à 543.000 dollars.
#étatsunis#journal#hiroshima
🇺🇸🇮🇷🇺🇦 Le journal américain The Washington Post a illustré son article affirmant que l’armée américaine avait déployé des mines dans le sud de l’Iran avec une photographie provenant de la zone de conflit en Ukraine.
#étatsunis#journal#mines#photo
#Refuge#Journal#amp#Mindfulness
Join the Refuge - Journal & Mindfulness beta on ✈️#TestFlight
🔗 Link: https://testflight.apple.com/join/v1Nx7smz
Shared by Dimitri