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-ով): - Վեբ կայքերի պարսկում:
- Տվյալների բազաների հետ աշխատելու համար:
- Ամենատարբեր առաջադրանքների համար, որոնք կապված են արտաքին ռեսուրսների սպասման հետ։