Asynkron behandling i Python

Asynkron behandling i Python

Denne artikkelen forklarer asynkron behandling i Python.

Du kan lære kodeeksempler for grunnleggende bruk av Pythons async/await og asyncio-modulen.

YouTube Video

Asynkron behandling i Python

Asynkron behandling i Python er en mekanisme for effektiv håndtering av tidkrevende I/O-operasjoner, som å lese og skrive filer eller nettverkskommunikasjon. I synkron behandling venter neste operasjon til den nåværende er ferdig, men med asynkron behandling kan du fortsette med andre oppgaver i ventetiden. I Python tilbys asyncio-modulen for å utføre asynkron behandling. Her forklarer vi de grunnleggende elementene og hvordan de brukes, trinn for trinn.

Grunnleggende Syntax

Kjernen i asynkron behandling er funksjoner kalt korutiner. async-funksjoner definerer asynkrone funksjoner, og await brukes til å vente på en asynkron oppgave innenfor disse funksjonene.

 1import asyncio
 2
 3async def say_hello():
 4    print("Hello")
 5    await asyncio.sleep(1)
 6    print("World")
 7
 8if __name__ == "__main__":
 9    # Execute asynchronous task
10    asyncio.run(say_hello())
  • I koden ovenfor defineres say_hello-funksjonen som en asynkron oppgave. Mens du venter i 1 sekund med sleep(), kan andre asynkrone oppgaver bli utført.

Utførelse av flere oppgaver

Ved å bruke gather-funksjonen i asyncio-modulen, kan du kjøre flere oppgaver samtidig.

 1import asyncio
 2
 3async def task1():
 4    print("Task 1 started")
 5    await asyncio.sleep(2)
 6    print("Task 1 completed")
 7
 8async def task2():
 9    print("Task 2 started")
10    await asyncio.sleep(1)
11    print("Task 2 completed")
12
13async def main():
14    await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17    asyncio.run(main())
  • I dette eksempelet kjøres task1 og task2 samtidig. Som et resultat fullføres task2 først av de to oppgavene, men total kjøretid tilsvarer den lengste oppgavens kjøretid.

Feilhåndtering

Feilhåndtering er viktig selv i asynkron behandling. Du kan fange og håndtere feil ved å bruke standard try-except-syntaks.

 1import asyncio
 2
 3async def faulty_task():
 4    raise Exception("An error occurred")
 5
 6async def main():
 7    try:
 8        await faulty_task()
 9    except Exception as e:
10        print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13    asyncio.run(main())
  • Denne koden viser hvordan unntak som oppstår i asynkrone funksjoner kan fanges med try-except og feilmeldingene håndteres trygt. Unntaket fra faulty_task fanges inne i main og vises på riktig måte.

Sammendrag

Asynkron behandling i Python bruker async / await og asyncio til å utføre andre oppgaver samtidig mens man venter på I/O, noe som gir effektiv prosessering. Ved å utnytte samtidig utførelse av flere oppgaver og asynkron I/O, kan du forbedre ytelsen betydelig. I tillegg, siden du kan håndtere feil på samme måte som med vanlige try-except, kan du trygt kjøre asynkrone koder.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video