Asynkron behandling i Python
Denne artikel forklarer asynkron behandling i Python.
Du kan lære kodeeksempler for grundlæggende brug af Pythons async/await og asyncio modulet.
YouTube Video
Asynkron behandling i Python
Asynkron behandling i Python er en mekanisme til effektivt at håndtere tidskrævende I/O-operationer, såsom læsning og skrivning af filer eller netværkskommunikation. Ved synkron behandling venter den næste operation, indtil den nuværende er færdig, men med asynkron behandling kan du fortsætte med andre opgaver i ventetiden. I Python tilbydes modulet asyncio til at udføre asynkron behandling. Her vil vi forklare de grundlæggende elementer og hvordan man bruger dem trin for trin.
Grundlæggende syntaks
Kernen i asynkron behandling er funktioner kaldet coroutines (korrutiner). async funktioner definerer asynkrone funktioner, og await bruges til at vente på en asynkron opgave inden for disse funktioner.
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 ovenstående kode er
say_hellofunktionen defineret som en asynkron opgave. Mens du venter i 1 sekund medsleep(), kan andre asynkrone opgaver blive udført.
Udførelse af flere opgaver
Ved at bruge gather-funktionen i asyncio-modulet kan du køre flere opgaver samtidigt.
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 eksempel udføres
task1ogtask2samtidigt. Som resultat afsluttestask2først af de to opgaver, men den samlede udførelsestid svarer til den længste opgaves udførelsestid.
Fejlhåndtering
Fejlhåndtering er vigtig, selv i asynkron behandling. Du kan fange og håndtere fejl ved hjælp af standard try-except syntaksen.
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 kode viser, hvordan undtagelser opstået i asynkrone funktioner kan fanges med
try-except, og deres fejlmeddelelser kan håndteres sikkert. Undtagelsen frafaulty_taskfanges imainog udskrives passende.
Sammendrag
Asynkron behandling i Python bruger async / await og asyncio til at udføre andre opgaver samtidigt, mens der ventes på I/O, hvilket muliggør effektiv behandling. Ved at udnytte samtidig udførelse af flere opgaver og asynkron I/O kan du forbedre ydeevnen væsentligt. Derudover kan du håndtere fejl på samme måde som med almindelig try-except, så du sikkert kan køre asynkron kode.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.