Asynkron behandling i Python
Den här artikeln förklarar asynkron behandling i Python.
Du kan lära dig kodexempel för grundläggande användning av Pythons async/await och asyncio-modulen.
YouTube Video
Asynkron behandling i Python
Asynkron bearbetning i Python är en mekanism för att effektivt hantera tidskrävande I/O-operationer, såsom filinläsning och -skrivning eller nätverkskommunikation. Vid synkron bearbetning väntar nästa operation tills den nuvarande är klar, men med asynkron bearbetning kan du fortsätta med andra uppgifter under väntetiden. I Python tillhandahålls modulen asyncio för att utföra asynkron bearbetning. Här kommer vi att förklara dess grundläggande element och hur du använder dem steg för steg.
Grundläggande syntax
I hjärtat av asynkron bearbetning finns funktioner som kallas korutiner. async-funktioner definierar asynkrona funktioner, och await används för att vänta på en asynkron uppgift inom dessa 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 koden ovan definieras funktionen
say_hellosom en asynkron uppgift. Medan du väntar i 1 sekund medsleep(), kan andra asynkrona uppgifter köras.
Köra flera uppgifter
Genom att använda funktionen gather i modulen asyncio, kan du köra flera uppgifter 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 detta exempel körs
task1ochtask2parallellt. Som resultat blirtask2klar först av de två uppgifterna, men den totala exekveringstiden motsvarar den längsta uppgiftens exekveringstid.
Felhantering
Felfångst är viktigt även vid asynkron behandling. Du kan fånga och hantera fel med hjälp av den standardiserade try-except-syntaxen.
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())- Den här koden visar hur undantag som uppstår i asynkrona funktioner kan fångas med
try-exceptoch deras felmeddelanden hanteras säkert. Undantaget frånfaulty_taskfångas upp inutimainoch hanteras på lämpligt sätt.
Sammanfattning
Asynkron bearbetning i Python använder async / await och asyncio för att köra andra uppgifter samtidigt som I/O väntas på, vilket möjliggör effektiv bearbetning. Genom att utnyttja samtidig körning av flera uppgifter och asynkron I/O kan du kraftigt förbättra prestandan. Dessutom, eftersom du kan hantera fel precis som med vanlig try-except, kan du köra asynkron kod på ett säkert sätt.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.