Отдельно разберём 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
🏞Lake Bled and Bled Castle — top Slovenian gems!
Crystal-clear waters and stunning mountain views 🌲
A small island with a church in the center, accessible by a traditional pletna boat 🚤
📏
📏
📏
📏
📏
📏
📏
📏
#Slovenia | @voyage
#Italia#Slovenia
⚛ Energia Nucleare: Il governo italiano ha dato un parere negativo al prolungamento dell’attività della centrale nucleare di Krško, in Slovenia, che si trova a poco più di 100km dal confine, nonostante le rassicurazioni tecniche del governo sloveno. Il Ministero della Transizione Energetica ha chiesto alla Slovenia di chiudere la centrale nucleare.
@UltimoraPolitics
#Slovenia🇸🇮
#Parlamentari
❓Come si vota in Slovenia?
L'Assemblea Nazionale (Državni zbor) si compone di 90 membri, eletti ogni 4 anni. 88 deputati sono eletti con sistema proporzionale a liste aperte in 8 circoscrizioni, ognuna delle quali elegge 11 membri:
1. Kranj;
2. Postumia (Postojna);
3. Lubiana Centro (Ljubljana Center);
4. Lubiana-Bežigrad (LjubljanaBežigrad)
5. Celje;
6. Novo Mesto;
7. Marburgo (Maribor);
8. Ptuj.
I seggi sono assegnati primariamente, su base circoscrizionale, con il quoziente di Droop; quelli non allocati sono riassegnati a livello nazionale con il metodo D'Hondt; è prevista una soglia di sbarramento del 4%. I restanti 2 seggi sono assegnati alle minoranze ungherese e italiana, con il metodo Borda.
In foto: il palazzo della Državni zbor (Lubiana).
@TuttoElezioni
#Elezioni#Slovenia
N1: A Lubiana l'affluenza record, non prevista alla vigilia, ha causato forti problemi nei seggi. In alcuni seggi gli elettori non hanno potuto votare, poiché erano finite le schede elettorali.
@UltimoraPolitics