Middle
Asinxron proqramlaşdırma (async) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Asinxron proqramlaşdırma — bu, proqramın əsas icra axınına mane olmadan eyni zamanda çoxsaylı tapşırıqları yerinə yetirməyə imkan verən paradigmadır. Bu, gözləmə vaxtlarından səmərəli istifadə etməklə (məsələn, giriş/çıxış əməliyyatlarında) həyata keçirilir.
Əsas anlayışlar:
- Korutinalar: Xüsusi funksiyalar olub, onların icrasını dayandıra və sonra davam etdirə bilərlər.
async defilə elan edilir. - Hadisələr döngüsü: Korutinaların icrasını idarə edən əsas orkestrator, hadisələri izləyir və biri gözləyirsə, tapşırıqlar arasında keçid edir.
- await: Gözlənilən əməliyyat tamamlanana qədər korutinanın icrasını dayandırmaq üçün açar söz (məsələn, başqa bir korutinanı çağırmaq və ya I/O nəticəsini gözləmək).
Nümunə:
// Asinxron funksiyanın nümunəsi
import asyncio
async def fetch_url(url):
print(f"Yükləməyə başlayır: {url}")
await asyncio.sleep(2) // Uzun əməliyyatın (məsələn, şəbəkə sorğusu) simulasyonu
print(f"Yükləmə tamamlandı: {url}")
async def main():
# Korutinalardan tapşırıqlar yaradılır
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Hər iki tapşırığın tamamlanmasını gözləyirik
await task1
await task2
// Hadisələr döngüsünü işə salırıq
if __name__ == "__main__":
asyncio.run(main())
Üstünlüklər:
- Performansın artırılması: Xüsusilə, I/O ilə bağlı tapşırıqlar üçün (şəbəkə sorğuları, fayllarla işləmək).
- Resursların daha yaxşı istifadəsi: Bir neçə iş parçacığı və ya proses yaradılmır, bu da əlavə xərcləri azaldır.
- Cavabvermə qabiliyyətinin saxlanması: Əsas axın bloklanmır, bu da interaktiv tətbiqlər və ya serverlər üçün vacibdir.
Asinxron proqramlaşdırma aşağıdakı tapşırıqlar üçün uyğundur:
- Veb serverlər (məsələn,
asynciovə yaFastAPIistifadə edilərək). - Veb saytların analizi.
- Verilənlər bazası ilə işləmək.
- Xarici resursların gözlənilməsi ilə bağlı hər hansı tapşırıq.