Middle
Ce este programarea asincronă (async)?
sobes.tech AI
Răspuns de la AI
Programarea asincronă este un paradigm care permite executarea mai multor sarcini simultan, fără a bloca firul principal de execuție al programului. Acest lucru se realizează prin utilizarea eficientă a timpului de așteptare (de exemplu, în cazul operațiilor de intrare/ieșire).
Concepte principale:
- Corutine: Funcții speciale care pot suspenda execuția și o pot relua mai târziu. Sunt declarate cu
async def. - Loop de evenimente: Orchestratorul principal care gestionează execuția corutinelor, monitorizează evenimentele și comută între sarcini atunci când una dintre ele așteaptă.
- await: Cuvânt cheie pentru a suspenda execuția unei corutine până când operația așteptată se finalizează (de exemplu, apelarea altei corutine sau așteptarea rezultatului I/O).
Exemplu:
// Exemplu de funcție asincronă
import asyncio
async def fetch_url(url):
print(f"Încep încărcarea: {url}")
await asyncio.sleep(2) // Simulare a unei operații lungi (de exemplu, solicitare de rețea)
print(f"Încărcare finalizată: {url}")
async def main():
# Creăm sarcini din corutine
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Așteptăm finalizarea ambelor sarcini
await task1
await task2
// Pornim loop-ul de evenimente
if __name__ == "__main__":
asyncio.run(main())
Avantaje:
- Creșterea performanței: În special pentru sarcini legate de I/O (solicitări de rețea, lucru cu fișiere).
- Utilizare mai bună a resurselor: Nu se creează multiple fire de execuție sau procese, ceea ce reduce costurile suplimentare.
- Menținerea receptivității: Firul principal nu este blocat, ceea ce este important pentru aplicații interactive sau servere.
Programarea asincronă este potrivită pentru:
- Servere web (de exemplu, cu
asynciosauFastAPI). - Parsarea site-urilor web.
- Lucrul cu baze de date.
- Orice sarcină legată de așteptarea resurselor externe.