Sobes.tech
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 def yordamida 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, asyncio yoki FastAPI yordamida).
  • Veb-saytlarni tahlil qilish.
  • Ma'lumotlar bazalari bilan ishlash.
  • Tashqi resurslarni kutish bilan bog'liq har qanday vazifa.