Skapa och Köra Koroutiner
Svep för att visa menyn
För att börja arbeta med asynkron programmering i Python behöver du förstå koroutiner. En korutin är en speciell funktion som definieras med async def. Koroutiner gör det möjligt att pausa och återuppta exekveringen, vilket gör det möjligt att hantera uppgifter som att vänta på in-/utdataoperationer – såsom filavläsning, nätverksförfrågningar eller databasfrågor – utan att blockera hela programmet. Detta innebär att medan en uppgift väntar på data kan andra uppgifter fortsätta köra, vilket förbättrar effektivitet och responsivitet.
För att köra en korutin använder du asyncio.run, som startar en händelseloop, kör din korutin och stänger loopen när den är klar. Detta är det standardiserade sättet att starta asynkron kod i modern Python.
Om du vill köra mer än en korutin samtidigt kan du använda asyncio.gather för att schemalägga dem parallellt. Detta gör att ditt program kan starta flera uppgifter och vänta på att alla ska bli klara, vilket utnyttjar tiden bättre, särskilt vid långsamma operationer som I/O.
Följande kod demonstrerar dessa koncept.
import asyncio
async def greet(name, delay):
await asyncio.sleep(delay)
print(f"Hello, {name}!")
async def main():
# Schedule two coroutines to run concurrently
await asyncio.gather(
greet("Alice", 2),
greet("Bob", 1)
)
asyncio.run(main())
Förväntat resultat:
Hello, Bob!
Hello, Alice!
Bobs hälsning visas först eftersom den använder en kortare fördröjning (1 sekund) än Alices (2 sekunder).
Korutinen greet skapas med async def, vilket gör det möjligt att pausa exekveringen med await asyncio.sleep(delay) innan en hälsning skrivs ut. Korutinen main schemalägger två instanser av greet – en för "Alice" med 2 sekunders fördröjning och en för "Bob" med 1 sekunds fördröjning – med hjälp av asyncio.gather. Detta innebär att båda hälsningarna hanteras samtidigt, så programmet väntar inte på att den ena ska bli klar innan den andra startar. Slutligen startar asyncio.run(main()) händelseloopen, kör korutinen main och ser till att allt städas upp efteråt. Detta tillvägagångssätt gör det möjligt att hantera flera uppgifter som innebär väntetid (som nätverksförfrågningar eller tidsfördröjningar) samtidigt, vilket gör programmet mer effektivt och responsivt.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal