Warum führt asyncio.gather() meine Coroutinen nicht gleichzeitig aus, wenn eine davon eine Blockierungsfunktion enthält,Python

Python-Programme
Anonymous
 Warum führt asyncio.gather() meine Coroutinen nicht gleichzeitig aus, wenn eine davon eine Blockierungsfunktion enthält,

Post by Anonymous »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post