Fanning maqsadi



Download 83,33 Kb.
bet6/6
Sana26.04.2022
Hajmi83,33 Kb.
#581886
1   2   3   4   5   6
Bog'liq
Parallel

Event loop — restorandagi xizmatchi, coroutine — bir vaqtda bajarilishi kerak bo’lgan vazifalar(buyurtma olish, ovqat tayyorlash, …).
Xuddi xizmatchi bir nechta vazifalarni bajarganidek, event loop ham bir vaqtda bir nechta coroutinelarni yurgizadi. Vaqtdan unumli foydalanish uchun esa vazifaning aynan qaysi qismi kutishni talab qilishini bilishimiz kerak. Shunda o’sha joyga kelganda hali kutib turishimiz kerakligini bilib, keyingi vazifaga o’tib ketaveramiz. Masalan, xizmatchi menuni mijozga berganidan keyin buyurtma olgunicha kutib turishi kerakligini biladi va shuning uchun vaqt sarflamasdan keyingi vazifaga o’tib ketaveradi va keyinroq yana aylanib keladi.
Agar asinxron dasturlash nima ekani tushunarli bo’lsa, keling endi u nimaga qodirligini ko’ramiz. Vazifa esa o’sha — URLdan ma’lumot olish:

5 ta taskni asinxron tarzda bajarish
5 ta task bo’lsa-da 1 soniyada? Ajoyib emasmi? Ishonavering 100 ta shunday task uchun ham deyarli shuncha vaqt ketadi.
E’tibor bering, 1-URLga request yuborilishi bilan event loop coroutineni kutmasdan keyingisiga o’tib ketayapti. Xo’sh, coroutine qayerda keyingi taskka o’tishni qanday bilayapti? Javob — await yordamida.
Demak, async asinxron funksiya(task)ni, await esa o’sha taskning aynan qaysi qism(lar)ida boshqa taskka o’tish mumkinligini bildiradi.
main funksiyasi orqali esa biz bajarishimiz kerak bo’lgan tasklarni yig’ib oldik. asyncio.gather(*coro) funksiyasi coroutinelarni yig’ib olib, bitta event loopda yurgizadi va natijalarni oladi. Biz return ishlatmaganimiz uchun natijalarni olib o’tirmadik.
Asyncio bu python tomonidan asinxron dasturlashni support qiladigan standart library. Lekin bu asinxron kod yozishning yagona usuli emas. Xohlasangiz, boshqa liblardan foydalanishingiz yoki o’zingiz yangisini yozib chiqishingiz mumkin. Hammasining asosida bir narsa yotadi.
Maqola boshida aytilganidek, hech bir usul yoki texnologiya mukammal emas. Asinxron dasturlashda ham yetarlicha kamchiliklari bor. Bularga race condition, memory leak, debug qilish qiyinligi va h.k.lar misol bo’la oladi. Eng muhimi, har bir usulning o’z o’rni bor va faqat ana shu holatdagina bizga yordam beradi. O’z o’rnida qo’llanilmasa, nafaqat effekt bermasligi, balki teskari effekt berishi ham mumkin. Asinxron dasturlash kodingiz ishlashini tezlashtirmaydi, balki kutish uchun ketadigan vaqtdan unumli foydalanishga yordam beradi. O’z-o’zidan, asinxron kod CPU-bound workloadda yordam bermaydi. Bu holda multithreading/multiprocessing ishlatish yaxshiroq fikr bo’lardi.
IO-bound workload — dasturning boshqa qismlar(internet, qattiq disk, …) bilan ma’lumot almashishi sababli threadning asosiy vaqti kutishda o’tadigan qismi.
CPU-bound workload — dasturning murakkab hisob-kitoblar yoki katta hajmdagi ma’lumotlar bilan aktiv ishlaydigan, CPU va RAMga katta yuk tushadigan qismi.

Mana bu kodda CPU-bound workloadda sinxron va asinxron deyarli bir xil vaqt sarflaganini ko’rish mumkin(sababi, ikki holatda ham thread har doim band):

CPU-bound workload sinxron va asinxron funksiyada
Bu maqola asinxron dasturlash haqida umumiy tasavvurga ega bo’lish uchun yozildi.
Bu hali boshlanishi xolos. Asinxron dasturlash juda katta va murakkab mavzu. Internetda har xil manbaalarda har xil talqin qilinganligi uchun o’rganish biroz qiyin. Official documentation esa siz va biz kabi end-userlar uchun emas, ko’proq framework developerlar uchun mo’ljallab yozilgan.
Shu yergacha o’qib kelgan bo’lsangiz, maqola foydali bo’libdi deb o’ylayman. Maqola bo’yicha savol va taklif/kamchiliklar bo’lsa telegramda shaxsiy chat orqali yoki Python uz guruhida yozavering.
Download 83,33 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish