Функция 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
📣Berkshire Hathaway Баффетта увеличивает долю в Occidental, — Reuters
• Berkshire Hathaway увеличила свою долю в акциях нефтяной компании США примерно до 15,2%. Согласно документам SEC, во вторник было куплено 5,9 млн акций Occidental на сумму около $336 млн.
• Акции Occidental выросли почти в 2 раза с начала года. Среди главных факторов крупные инвестиции таких компаний как Berkshire и рост цен на нефть, вызванный украинским кризисом и избеганием российского сырья.
• На ежегодном собрании акционеров Berkshire 30 апреля Баффетт сообщал, что покупал акции Occidental с 28 февраля по 16 марта 2022 года. Он также отметил, что "в последние пару лет сосредоточились на более ярких акциях, из-за чего рынки временами напоминали казино".
#BRK
@IF_Market_News
⚠️🇺🇸#акции#сша#warning
Berkshire Hathaway (#BRK) провела годовое собрание акционеров:
Грег Абель, новый CEO Berkshire заявил, что хоть ИИ и горячая на данный момент тема, Berkshire не будет "заниматься ИИ ради ИИ"
Уоррен Баффет, председатель сд компании, заявил, что рынки сейчас похожи на казино, а инвесторы еще никогда не были настолько по-лудомански настроены ...
Объем налички на балансе Berkshire опять обновил рекорд (уже $397.4 млрд) - компания продолжает воздерживаться от новых крупных покупок т.к. считает рынок дорогим...
Berkshire продолжает продавать акции...
Пузырь ИИ есть, но мы то знаем, что сдуть его очень тяжело…