Функция 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
Для незабываемых эмоций и максимального удовольствия мы создали премиальные линейки 📺ULED телевизоров Hisense, обеспечивающие фантастическую яркость ваших развлечений. 😃
👉 Высокая яркость ULED телевизоров: 400 нит в линейке U7HQ и 500 нит в линейке U8HQ позволит вам наслаждаться любимыми видео и играми в отличном качестве даже при ярком внешнем освещении.
👉 А их пиковая яркость от 600 до 1300 нит поможет оценить великолепные супернасыщенные переходы и градиенты при просмотре HDR контента.
💪 Все это вместе с превосходной контрастностью и технологией локального затемнения сделает изображение максимально живым и ярким для премиального уровня и фантастической яркости ваших развлечений. 😍
#ULED телевизоры Hisense доступны в магазинах:
🛒М.Видео
🛒Эльдорадо
🛒Технопарк
🛒Ситилинк
Как говорится, лучше 1 раз увидеть 👀, чем 100 раз услышать. Жители Москвы, спешим вас порадовать - теперь у вас есть возможность оценить наши лучшие телевизоры вживую! 😃 Ведь в 8 магазинах М.Видео в Москве открылись бренд-зоны компании Hisense.
Здесь вы можете посмотреть на лазерные телевизоры Hisense #LaserTV, а также премиальные 📺 модели #ULED на квантовых точках, отвечающих за сочную цветопередачу, с локальным затемнением для идеальной контрастности, а также высоким показателем пиковой яркости до 1000 Нит и частотой обновления экрана 120 Гц, обеспечивающей плавность движений.
Новые бренд-зоны расположены:
👉 Дмитровское ш., д. 116, ТЦ «Лента»
👉 Новоясеневский пр., д. 1, ТРЦ «Спектр»
👉 55-56 км МКАД, ТРК VEGAS Кунцево
👉 Каширское ш., д. 26, ТРК «Москворечье»
👉 Хорошевское ш., д. 27, ТРЦ «Хорошо!»
👉 Багратионовский пр-зд, д. 5, ТРЦ «Филион»
👉 пр. Андропова, д. 8, ТЦ «Мегаполис»
👉 ул. Большая Тульская, д. 13, ТРЦ «Ереван Плаза»
Приходите и оцените наши премиальные телевизоры в магазинах М.Видео