Отдельно разберём TaskGroup, который пришел на замену gather в Python 3.11.
Ключевые отличия
▫️create_task() возвращает объект asyncio.Task, у которого есть соответствюущие методы управления. То есть у нас больше контроля
▫️это контекстный менеджер, который гарантирует что все таски будут остановлены по выходу из контекста
▫️ошибка автоматически отменяет незавершенные задачи,
▫️except* передает нам ExceptionGroup, в котором каждую ошибку можно обработать отдельно
import asyncio
import random
async def do_it() -> str:
if random.random() < 0.1:
raise ValueError('Oops')
delay = random.uniform(0.5, 1.5)
await asyncio.sleep(delay)
return delay
async def main():
try:
async with asyncio.TaskGroup() as tg:
for _ in range(10):
tasks.append(tg.create_task(do_it()))
for t in tasks:
print(t.result())
except *ValueError as e:
for err in e.exceptions:
print(err)
asyncio.run(main())
Рекомендую изучить страницу Coroutines and Tasks из документации, где представлено больше интересных примеров и механизмов
- таймауты
- отмена задач
- создание задач из другого потока
#async
#ZM
👆Цена пытается отскочить от уровня накопления долгосрочного.
Плюсы и минусы компании, которые я заметил:
🟢 Компания восстановила доходность пиковую (NM приближается к 30%).
🟢 Появился байбэк.
🟢 EPS пока растёт с опережением.
🔴 Выручка растёт вяло - почти не растёт.
🔴 Конкуренция со стороны Teams и Meet усиливается.
🔴 После пандемии рынок видео-звонков стал "низко-растущим".
❓Как думаете, цена сможет вернуться хотя бы в середину своего диапазона исторического? (200-300$)
🤔👇
#poetry#zm
This is ship
I can't skip
This is trip
I can't sit
This is rift
I can't twist
This is the chance
I can't dance
This is the bliss
I can't miss
This is the joy
I can't employ
This is the start
I can't dart .
#humour#review