Отдельно разберём 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
人物:#胡桃
作者:#cybertron231
说明:Here is the artist (NSFW)!
这件衣服是我制作和装配的。它并不完美,但它确实有效!
下载:https://wwze.lanzoub.com/iOGIm0p3a6hc
来源:https://gamebanana.com/mods/430227
人物:#优菈
作者:#cybertron231
说明:
A quick mod I've wanted to do for a while!
我想做一段时间的快速模组!
Here's an esdeath mod!
这是一个 esdeath 模组!
This was something I quickly did in 2 hours on a touchpad after going insane last night, but I think it turned out pretty well!
这是我昨晚发疯后用触摸板在 2 小时内快速完成的操作,但我认为结果非常好!
This mod is out for everyone except Shinya (dumbass)!
除了 Shinya(笨蛋)之外,这个模组适用于所有人!
I'm working on other mods at the same time, but this one I hope will satisfy people as they wait for bigger.
我同时在开发其他模组,但我希望这个模组能让人们在等待更大的模组时感到满意。
下载:https://wwze.lanzoub.com/ihbrC0oq5lxa
来源:https://gamebanana.com/mods/429747