Отдельно разберём 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
#hikoya
Bo‘lgan gap
Kecha institutga hujjat topshirgani bordim. O‘sha yerda Dildorani uchratdim. Yuragimning tub-tubidagi ismsiz dardlar qayta bosh ko‘tardi, uch yil oldingi sirli-sehrli xotiralar tasavvurimda asta-sekin jonlandi.
Go‘yo yam-yashillikka, nurga ko‘milgan moviy diyorga tushib qolganday edim. Biroq to‘satdan turgan shiddatli shamol hamma narsani ag‘dar-to‘ntar qilib yubordi, menga uch asrday tuyulgan uch yil mobaynida asrab-avaylab yurgan tuyg‘u-xayollarim o‘t tushgan somon g‘aramidek lahzada yonib kul bo‘ldi. Ulardan alam-iztirob kuligina qoldi, xolos…
🔗batafsil
📱Telegram📱Instagram
📱Veb-sayt📱Facebook
Bu hikoyani tushunganimda va amalda qoʻllaganimda daromadimda oʻzgarishlar boʻlgan
Yuqoridagi hazil sifatida ulashilgan postdan keyin xabarlar kela boshlagani uchun bu postni yozishga qaror qildim. Quyidagi hikoyani diqqat bilan bir necha bor oʻqing:
... Ikki dehqon bugʻdoy ekishardi. Ikkalasi ham bir xil mehnat qilishadi, ter toʻkib ishlar ekan. Biroq ulardan biri unumsiz yerga ekib, arang noniga yetadigan hosil olarkan. Ikkinchisi esa unumdor yer topib, moʻl hosil oladi va yaxshi daromad qilarkan. Farq faqat shundaki: ikkinchisi qayerda ekishni bilardi.
Bu hayotning har sohasiga tegishli, xatto, dizaynga ham. Koʻp dizaynerlar tinmay ishlashadi, lekin baʼzilari kuchini toʻgʻri yoʻnaltirib, boshqalardan bir necha barobar koʻproq daromad qiladi. Bu yerda tajriba boʻlishi yoki boʻlmasligini ahamiyati yoʻq...
— Yaʼniki, mehnatning oʻzi yetarli emas, muhimi, qayerda va qanday yoʻnalishda mehnat qilishdir.
Shu joyda toʻxtab oʻylab koʻring. Sizchi toʻgʻri joyda ekayapsizmi?
@suxrobblog
#hikoya#karyera#daromad