Ich habe folgenden Code:
Code: Select all
import asyncio
import time
async def task1():
print("task1 start")
time.sleep(2) # intentionally blocking
print("task1 end")
async def task2():
print("task2 start")
await asyncio.sleep(1)
print("task2 end")
async def main():
await asyncio.gather(task1(), task2())
asyncio.run(main())
Ich habe erwartet, dass beide Aufgaben gleichzeitig ausgeführt werden, aber Aufgabe2 startet erst, nachdem Aufgabe1 abgeschlossen ist. Warum führt asyncio.gather() sie hier nicht gleichzeitig aus? Was ist der richtige Weg, um Task1 nicht blockierend zu machen? Sollte ich time.sleep() durch etwas anderes ersetzen oder es in einem anderen Thread ausführen?