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 medsleep(), 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
task1ogtask2samtidig. Som et resultat fullførestask2fø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-exceptog feilmeldingene håndteres trygt. Unntaket frafaulty_taskfanges inne imainog 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.