Python `asyncio` Ereignisschleifen: Wie kann man andere ausländische Schleifen integrieren?Python

Python-Programme
Anonymous
 Python `asyncio` Ereignisschleifen: Wie kann man andere ausländische Schleifen integrieren?

Post by Anonymous »

Im Moment habe ich ein bisschen mit Python asyncio und mit Ereignisschleifen im Allgemeinen zu kämpfen. Es ist jedoch wahrscheinlich ein ziemlich ungewöhnliches Experiment: Ich versuche, wenn ich meine eigene Ereignisschleife (d. H. Asyncio subklassigen) implementieren könnte. üblich, z. Verwenden von Async /

Code: Select all

await
syntax. Darüber hinaus kann ich "andere Hauptschleifen" hinzufügen und entfernen, und es würde auch diese verarbeiten. Zum Beispiel könnte ich die Glib -Schleife hinzufügen, damit ich in meinem GTK -Projekt asynchronisierte Funktionen verwenden kann. Vielleicht sogar andere neben. Ich möchte, dass diese Schnittstelle vielseitig ist, d. H. Es sollte möglich sein, nicht nur Glibs Schleife, sondern alle möglichen anderen zu verwenden. Gibt es ein gemeinsames Muster oder eine Idee, wie man Hauptschleifen integriert, die für Glib und viele andere funktioniert? < /P>
Es sollte auch ressourceneffizient sein. Andernfalls könnte ich nur eine Weile true Schleife in Run_forever haben, die ständig nach Aufgaben überprüft, um sie auszuführen (und sie auszuführen) und ständig eine bestimmte Methode meiner "anderen Schleife" -Rinterface aufruft, sagen Sie in Foreignloop.process (Selbst) , die dann z. Rufen Sie gtk_loop.get_context () auf. Iteration (false) für gtk. Dies würde einen CPU -Kern ständig beschäftigt. Denken Sie, dass es möglich ist (ohne einen wahnsinnigen Code-Haufen, was vielleicht sogar schwer zu pflegen ist)? Dinge auch. Es gibt auch https://github.com/jhenstridge/asyncio-glib. Das ist viel kompakter und sieht interessant aus. Leider verstehe ich diesen bisher noch nicht so gut. Es macht einige Dinge, über die ich nicht viel Dokumentation finden kann. Was ist sein grundlegender Mechanismus? Es sieht so aus, als ob es mit UNIX 'SELECT funktioniert (wie die gesamte Standard -Ereignisschleife implementiert), aber wie ist das mit Glibs Hauptschleife verdrahtet? Und ist das ein gemeinsamer Ansatz oder ein sehr GTK -spezifischer Trick? Es sei denn, es gibt zumindest einen sehr wichtigen Grund, es als nicht nützlich zu betrachten. :)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post