Sobes.tech
Middle

Ի՞նչ է ասինխրոն ծրագրավորումը (async):

sobes.tech AI

Պատասխան AI-ից

Ասինխրոն ծրագրավորումը՝ դա մի պառադիգմ է, որը թույլ է տալիս միաժամանակ կատարել բազմաթիվ առաջադրանքներ՝ չխոչընդոտելով ծրագրի հիմնական հոսքը։ Դա հասնում է սպասման ժամանակի արդյունավետ օգտագործման միջոցով (օրինակ՝ մուտք-արտահոսքի գործողությունների ժամանակ):

Հիմնական գաղափարները:

  • Coroutines (Կորուտիններ): Մասնակի ֆունկցիաներ, որոնք կարող են ժամանակավորապես կանգ առնել և հետագայում շարունակել։ Դրանք հայտարարում են async def-ով:
  • Event Loop (Իրադարձությունների ցիկլ): Հիմնական օրգանիզատորը, որը կառավարում է կորուտինների կատարմանը, հետևում է իրադարձություններին և փոխում առաջադրանքների միջև, երբ մեկը սպասում է:
  • await: Կողմից բառ, որը կանգնեցնում է կորուտինի կատարմանը մինչև սպասվող գործողության ավարտը (օրինակ՝ մյուս կորուտինի կանչ կամ I/O արդյունքի սպասում):

Օրինակ:

// Ասինխրոն ֆունկցիայի օրինակ
import asyncio

async def fetch_url(url):
    print(f"Սկսում եմ բեռնել: {url}")
    await asyncio.sleep(2) // Ուղղակի երկար գործողության իմիտացիա (օրինակ՝ ցանցային հարցում)
    print(f"Բեռնումը ավարտվեց: {url}")

async def main():
    # Ստեղծում ենք առաջադրանքներ կորուտիններից
    task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
    task2 = asyncio.create_task(fetch_url("http://example.com/page2"))

    # Կատարման ավարտը սպասում ենք երկու առաջադրանքներին
    await task1
    await task2

// Կատարում ենք իրադարձությունների ցիկլը
if __name__ == "__main__":
    asyncio.run(main())

Առավելությունները:

  • Արդյունավետության բարձրացում: Հատկապես I/O-կողմ առաջադրանքների համար (ցանցային հարցումներ, ֆայլերի աշխատանք):
  • Ռեսուրսների լավագույն օգտագործում: Մի քանի հոսքեր կամ պրոցեսներ չեն ստեղծվում, ինչը նվազեցնում է ծախսերը:
  • Անցանելիության պահպանություն: Հիմնական հոսքը չի խոչընդոտվում, ինչը կարևոր է ինտերակտիվ ծրագրերի կամ սերվերների համար:

Ասինխրոն ծրագրավորումը լավ է համապատասխանում՝

  • Վեբ սերվերների համար (օրինակ՝ asyncio կամ FastAPI-ով):
  • Վեբ կայքերի պարսկում:
  • Տվյալների բազաների հետ աշխատելու համար:
  • Ամենատարբեր առաջադրանքների համար, որոնք կապված են արտաքին ռեսուրսների սպասման հետ։