JET School

Koroutinlər nədir?

Koroutinlər (Coroutines) — Python-da asinxron proqramlaşdırma üçün istifadə olunan funksiyalardır və onlar öz vəziyyətlərini yadda saxlaya bilən və dayandırılıb sonra davam etdirilə bilən funksiyalardır. Koroutinlər klassik funksiyalardan fərqli olaraq yalnız bir dəfə deyil, birdən çox dəfə “çalışa” bilir, çünki hər dəfə çağırıldıqda əvvəl dayandığı nöqtədən davam edirlər.

Koroutinlər əsasən asinxron əməliyyatları (məsələn, veb sorğular, fayl oxuma/yazma, istifadəçi qarşılıqlı əlaqəsi və s.) bloklamadan icra etmək üçün istifadə olunur. Bu da proqramın daha sürətli və effektiv işləməsinə imkan verir.

Əsas fərq:

  • Adi funksiya return ilə nəticəni qaytarır və işi bitir.
  • Koroutin await/yield ilə müvəqqəti dayana bilər və sonra davam edə bilər.


Koroutin necə yaradılır:

Koroutinlər async def ilə təyin olunur və await ifadəsi ilə başqa asinxron funksiyaları çağırır.


import asyncio

async def salamlama():

print("Salam")

await asyncio.sleep(2)

print("2 saniyə sonra yenə salam!")


Necə çağırılır:

Koroutinlər birbaşa çağırıla bilməz, onlar await və ya asyncio.run() ilə idarə olunmalıdır:


asyncio.run(salamlama())

Koroutinlərin üstünlükləri:

  • Bloklamayan (non-blocking) əməliyyatlar üçün idealdır.
  • Eyni anda bir neçə işi (məsələn, API sorğuları) paralel yerinə yetirməyə imkan verir.
  • Resurslara qənaət edir, çünki “çox prosesli” və ya “çox yivli” modellərdən daha yüngüldür.

Qeyd:

Koroutinləri tam başa düşmək üçün həmçinin aşağıdakı anlayışları bilmək faydalıdır:

  • async və await açar sözləri
  • Event loop (Hadisə dövrü)
  • asyncio kitabxanası

Mürəkkəb nümunə:


import asyncio


async def birinci():

print("Birinci başladı")

await asyncio.sleep(1)

print("Birinci tamamlandı")


async def ikinci():

print("İkinci başladı")

await asyncio.sleep(1)

print("İkinci tamamlandı")


async def main():

await asyncio.gather(birinci(), ikinci())


asyncio.run(main())

Bu nümunədə hər iki koroutin eyni anda işləyir və proqram ümumilikdə yalnız 1 saniyə vaxt aparır.

Əlaqəli terminlər:

IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!