Kann eine asyncio-Ereignisschleife im Hintergrund laufen, ohne den Python-Interpreter auszusetzen?

Die Dokumentation für asyncio gibt zwei Beispiele für das Drucken von "Hello World" alle zwei Sekunden: https://docs.python.org/3/library/asyncio-eventloop.html#asyncio-hello-world-callback https: // Docs.python.org/3/library/asyncio-task.html#asyncio-hello-world-coroutine

Ich kann diese aus dem Dolmetscher ausführen, aber wenn ich den Zugang zum Dolmetscher verliere. Kann eine asyncio Event-Loop im Hintergrund laufen, damit ich die Kommandos beim Interpreter eingeben kann?

One Solution collect form web for “Kann eine asyncio-Ereignisschleife im Hintergrund laufen, ohne den Python-Interpreter auszusetzen?”

Sie können die Ereignis-Schleife innerhalb eines Hintergrund-Threads ausführen:

>>> import asyncio >>> >>> @asyncio.coroutine ... def greet_every_two_seconds(): ... while True: ... print('Hello World') ... yield from asyncio.sleep(2) ... >>> def loop_in_thread(loop): ... asyncio.set_event_loop(loop) ... loop.run_until_complete(greet_every_two_seconds()) ... >>> >>> loop = asyncio.get_event_loop() >>> import threading >>> t = threading.Thread(target=loop_in_thread, args=(loop,)) >>> t.start() Hello World >>> >>> Hello World 

Beachten Sie, dass Sie asyncio.set_event_loop auf der loop aufrufen asyncio.set_event_loop , sonst bekommt man einen Fehler, der besagt, dass der aktuelle Thread keine Event-Loop hat.

Wenn du mit dem Event-Loop aus dem Haupt-Thread interagieren möchtest, musst du an loop.call_soon_threadsafe Aufrufe loop.call_soon_threadsafe .

Während diese Art von Ding ist eine gute Möglichkeit, im Dolmetscher zu experimentieren, in tatsächlichen Programmen, werden Sie wahrscheinlich wollen alle Ihren Code läuft in der Event-Schleife, anstatt Einführung von Threads.

  • Python asyncio Aufgabe hat schlechte Ausbeute
  • Python asyncio, wie man erstellt und löscht Aufgaben aus einem anderen Thread
  • Tulpe / asyncIO: Warum nicht alle Anrufe asynchron sind und angeben, wann die Dinge synchron sein sollten?
  • Asyncio persisent Client-Protokoll-Klasse mit Warteschlange
  • Python asyncio Kraft Zeitüberschreitung
  • Python 3.5 aiohttp Blöcke auch bei Verwendung von async / warnen
  • Wie Stream stdout / stderr aus einem Kind Prozess mit asyncio, und erhalten Sie seinen Exit-Code nach?
  • Python 3.5 async für Blöcke der Ioloop
  • Was ist der richtige Weg, um nach einer unterbrochenen Ereignisschleife aufzuräumen?
  • Python asyncio laufen event loop einmal?
  • Wie kann ich gleichzeitige Aufgaben mit dem asyncio-Modul von python richtig erstellen und ausführen?
  • Python ist die beste Programmiersprache der Welt.