Middle
Kas ir asinhronā programmēšana (async)?
sobes.tech AI
Atbilde no AI
Asinhronā programmēšana — tā ir paradigma, kas ļauj vienlaikus veikt daudz uzdevumu, neapturot galveno programmas plūsmu. Tas tiek panākts ar efektīvu gaidīšanas laika izmantošanu (piemēram, ievades-izvades operācijās).
Galvenās koncepcijas:
- Coroutines (Korutinas): Īpašas funkcijas, kas var pagaidu apturēt savu izpildi un vēlāk atsākt. Tās deklarē ar
async def. - Event Loop (Notikumu cikls): Galvenais orķestrators, kas pārvalda korutinu izpildi, seko notikumiem un pārslēdzas starp uzdevumiem, kad viens no tiem gaida.
- await: Atslēgvārds, kas aptur korutinu līdz gaidītās operācijas pabeigšanai (piemēram, citas korutinas izsaukums vai I/O rezultātu gaidīšana).
Piemērs:
// Asinhronās funkcijas piemērs
import asyncio
async def fetch_url(url):
print(f"Sāku lejuplādi: {url}")
await asyncio.sleep(2) // Ilgas operācijas imitācija (piemēram, tīkla pieprasījums)
print(f"Lejuplāde pabeigta: {url}")
async def main():
# Korutinu uzdevumu izveide
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Gaidām abu uzdevumu pabeigšanu
await task1
await task2
// Izpildām notikumu ciklu
if __name__ == "__main__":
asyncio.run(main())
Priekšrocības:
- Ražīguma palielināšana: Īpaši I/O ierobežotu uzdevumu gadījumā (tīkla pieprasījumi, failu apstrāde).
- Resursu efektīvāka izmantošana: Netiek veidoti daudzi pavedieni vai procesi, kas samazina izdevumus.
- Atbilstības saglabāšana: Galvenais plūsma netiek bloķēta, kas ir svarīgi interaktīvām lietojumprogrammām vai serveriem.
Asinhroniskā programmēšana ir labi piemērota:
- Tīmekļa serveriem (piemēram, ar
asynciovaiFastAPI). - Tīmekļa vietņu parsēšanai.
- Datu bāzu darbam.
- Visu uzdevumu veikšanai, kas saistīti ar ārēju resursu gaidīšanu.