Отдельно разберём 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
🪐 Far in the constellation Carina, the peculiar galaxy ESO 137-001 speeds through the hot plasma of the Norma Cluster, leaving behind dramatic blue tendrils of stripped gas that trail for over 260,000 light-years. These glowing streams act as cosmic birthplaces, where stars are forming outside the galaxy itself—an ethereal wake marking where galactic material is torn away and reborn as new suns adrift in intergalactic space. ✨
#galaxies⚡#starformation⚡#Carina⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 The star RX J0806.3–4123, located about 1,200 light-years away in the constellation Carina, is an unusual "isolated neutron star" that emits almost only X-rays and spins once every 11 seconds. Unlike most neutron stars, which are powerful radio or gamma-ray sources, RX J0806.3–4123 glows quietly and steadily, making it a rare and mysterious member of the "Magnificent Seven," a group of neutron stars that reveal the hidden diversity of how dead stars can shine. ✨
#neutronstars⚡#carina⚡#xray⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 The Bullet Cluster, found in the constellation Carina, provides some of the clearest real-world evidence for dark matter—a mysterious, invisible substance making up most of the universe’s mass. When two galaxy clusters crashed together, X-ray images showed that most of the visible matter stayed at the center, but gravity maps revealed most of the mass had moved ahead, proving something unseen—dark matter—was driving the collision's aftermath. ✨
#darkmatter⚡#galaxyclusters⚡#carina⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries