Sobes.tech
Middle

Python'da korutina nima?

sobes.tech AI

AIdan javob

Koruin — bu umumiylashtirish bo‘lib, u to‘xtatib va qayta boshlash mumkin bo‘lgan, holatini saqlab qoladigan kichik dasturlardir. Oddiy funksiyalardan farqli o‘laroq, ular bir chaqiruvda oxirigacha bajariladigan o‘rindosh funksiyalar bo‘lib, ular boshqa korutinaga yoki asosiy voqea tsikliga "kontrolni berishi" va keyin uni o‘sha joydan "qabul qilishi" mumkin.

Python’da korutinlar async def va await kalit so‘zlari yordamida amalga oshiriladi.

Asosiy xususiyatlar:

  • To‘xtatish va qayta boshlash: Ular o‘z bajarilishini (await) to‘xtatishi va keyinchalik qayta boshlashi mumkin.
  • Holatni saqlash: To‘xtatilgandan so‘ng, ular o‘zining lokal o‘zgaruvchilari holatini va bajarilish joyini saqlab qoladi.
  • Aniq boshqaruv: Boshqaruv o'tkazish aniq await yordamida amalga oshiriladi.
  • Tarmoq yoki jarayonlarsiz bloklamasdan kirish/chiqish: Ko‘pincha, tarmoq so‘rovlar kabi bloklamasdan kirish/chiqish operatsiyalarini bajarish uchun ishlatiladi.

Sintaksis:

// Asinxron funktsiya (korutin) ta'rifi
async def my_coroutine():
    print("Korutinaning boshlanishi")
    await some_async_operation() // Asinxron operatsiya tugashini kutish
    print("Kutishdan keyingi korutina davomiyligi")

// Korutinaning chaqirilishi
import asyncio

async def main():
    await my_coroutine() // Korutinaning bajarilishi

# Asosiy voqea tsikligini ishga tushirish
asyncio.run(main())

Afzalliklar:

  • Ishlash samaradorligi: Kutish bilan bog‘liq vazifalar uchun (masalan, I/O Bound) tizim resurslarini samaraliroq ishlatadi.
  • O‘qilishi: async/await sintaksisi asinxron kodni sinxron kodga yaqinlashtiradi va o‘qishni yaxshilaydi.
  • Raqobat: Threadlarni boshqarish murakkabliksiz, vazifalarni osongina raqobatli bajarishga imkon beradi.

Korutinalar Python’da asinxron dasturlashning muhim qismidir va asyncio, aiohttp va FastAPI kabi frameworklarda ishlatiladi.