Middle
Asinxron dasturlash nima (async)?
sobes.tech AI
AIdan javob
Asinxron dasturlash — bu dasturning asosiy bajarish oqimini bloklamasdan, bir vaqtning o'zida ko'plab vazifalarni bajarishga imkon beradigan paradigmadir. Bu kutish vaqtidan samarali foydalanish (masalan, kirish-chiqish operatsiyalari paytida) orqali amalga oshiriladi.
Asosiy tushunchalar:
- Koruynlar: Maxsus funktsiyalar bo'lib, ular o'z bajarilishini to'xtatishi va keyinchalik davom ettirishi mumkin.
async defyordamida e'lon qilinadi. - Voqealar tsikli: Koruynlarning bajarilishini boshqaradigan asosiy orkestrator, voqealarni kuzatadi va biri kutayotganida vazifalar orasida o'tishni ta'minlaydi.
- await: Kutish operatsiyasi tugaguncha koruynning bajarilishini to'xtatish uchun kalit so'z (masalan, boshqa koruynni chaqirish yoki I/O natijasini kutish).
Misol:
// Asinxron funktsiya misoli
import asyncio
async def fetch_url(url):
print(f"Yuklashni boshlash: {url}")
await asyncio.sleep(2) // Uzun operatsiya (masalan, tarmoq so'rovi) simulyatsiyasi
print(f"Yuklash tugadi: {url}")
async def main():
# Koruynlardan vazifalar yaratish
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Ikkala vazifaning tugashini kutish
await task1
await task2
// Voqealar tsiklini ishga tushirish
if __name__ == "__main__":
asyncio.run(main())
Afzalliklari:
- Ishlash samaradorligini oshirish: Ayniqsa, I/O bilan bog'liq vazifalar uchun (tarmoq so'rovlari, fayllar bilan ishlash).
- Resurslardan samarali foydalanish: Ko'p oqimlar yoki jarayonlar yaratmaydi, bu qo'shimcha xarajatlarni kamaytiradi.
- Javob berish imkoniyatini saqlash: Asosiy oqim bloklanmaydi, bu interaktiv ilovalar yoki serverlar uchun muhim.
Asinxron dasturlash quyidagi vazifalar uchun mos:
- Veb-serverlar (masalan,
asyncioyokiFastAPIyordamida). - Veb-saytlarni tahlil qilish.
- Ma'lumotlar bazalari bilan ishlash.
- Tashqi resurslarni kutish bilan bog'liq har qanday vazifa.