Anstatt reactor.run() auszuführen, möchte ich gelegentlich etwas anderes (ich weiß nicht, wie reactor.runOnce() oder etwas) gelegentlich aufrufen, während ich meine eigene Hauptschleife beibehalte. Gibt es dafür eine Best-Practice mit Twisted?Was ist der beste Weg, den Reaktor von Twisted so zu steuern, dass er nicht blockiert?
Antwort
Ja. Die beste Vorgehensweise ist, dass dies eine schlechte Idee ist und dass Sie es nie wirklich tun müssen. Es funktioniert nicht mit allen Reaktoren, und Sie können sicherlich nicht zwei verschiedene Bibliotheken haben, die dies tun wollen.
Warum brauchen Sie Ihre eigene Hauptschleife? Wahrscheinlichkeiten sind, es ist etwas wie "Ich möchte mit PyGame arbeiten" oder "Ich schreibe ein GUI-Programm und ich möchte GTK's Hauptschleife verwenden" oder "Ich benutze Twisted aus Blender und es hat seine eigene Event-Handhabung". Wenn dies der Fall ist, sollten Sie diese spezifische Frage stellen, da jede von ihnen ihre eigene Antwort hat.
Wenn Sie absolut dies tun müssen (und wiederum: Sie nicht), ist es ratsam, reactor.iterate()
regelmäßig zu rufen. Dies wird langsam sein, Break-Signal-Handhabung und haben wonky Semantik in Bezug auf reactor.stop()
. Es wird viele Bugs in dein Programm einführen, die sonst nicht vorhanden wären. Wenn du Hilfe bei der Diagnose benötigst, wenn du jemanden im Twisted-Entwicklerteam fragst, ist das erste, was er dir sagt, "hör auf damit, du nicht 't müssen es tun ".
- 1. Was ist der beste Weg, Winforms-Apps fern zu steuern?
- 2. Twisted Reaktor ist gestoppt, aber Programm endet nicht?
- 3. Was ist der beste Weg, um Code zu finden, der deinen Haupt-Thread blockiert?
- 4. Was ist der beste Weg zu
- 5. Was ist der beste Weg
- 6. Was ist der "Reaktor" in Maven?
- 7. Was ist der beste Weg, um die Richtung einer for-Schleife bedingt zu steuern
- 8. Was ist der beste Weg, um eine Variable mit Optionsfeldern zu steuern?
- 9. Was ist der beste Weg, zu verhindern, dass nicht genügend Arbeitsspeicher (OOM) auf Linux einfriert?
- 10. Der beste Weg, Zweig Zugriff in Git zu steuern
- 11. Wenn eine Goroutine bei E/A blockiert, wie erkennt der Scheduler, dass er nicht mehr blockiert?
- 12. was der beste Weg
- 13. Android, Was ist der beste Weg, um AbstractThreadedSyncAdapter zu töten?
- 14. Was ist der beste Weg, Performance-Probleme zu debuggen?
- 15. Was ist der beste Weg, OpenGL zu debuggen?
- 16. Was ist der beste Weg, Crystal Reports zu verbreiten?
- 17. Was ist der beste Weg, Ränge in MYSQL zu generieren?
- 18. Was ist der beste Weg, weiße Farbe zu erkennen?
- 19. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 20. Was ist der "beste" Weg, Skripte zu speichern?
- 21. Was ist der beste Weg, Zeitzonen mit Javascript zu behandeln
- 22. Was ist der beste Weg, Umbraco zu entwickeln?
- 23. Was ist der beste Weg, Django 1.5 zu lernen?
- 24. Was ist der beste Weg, Ausnahmen in Perl zu behandeln?
- 25. Was ist der beste/sicherste Weg Homebrew neu zu installieren?
- 26. Was ist der beste Weg, Google Cloud Storage zu implementieren?
- 27. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 28. Was ist der beste Weg, Nachrichten an Kafka zu veröffentlichen?
- 29. Was ist der beste Weg, eine Prozedur "verzögert" zu nennen?
- 30. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
Ich arbeite mit Pyglet. Es ist schade, so verdreht ist das; es scheint die Dinge so viel einfacher zu machen, nur nicht das, was ich tun möchte. Sie haben wahrscheinlich Recht, dass ich mein Programm nicht außerhalb von twisted reactor.run paradigma schreiben muss, aber das ändert nichts an der Tatsache, dass es für mich keine sehr elegante Lösung wäre. Ich würde lieber meine eigene Low-Level-Komm-Suite schreiben, als sich darum zu kümmern. – shino
Dies bedeutet nur, dass Sie pygletreactor wollen: http://code.google.com/p/pyglet-twisted/ –
Warten - gibt es eine Möglichkeit, Pyglettreaktor zu verwenden, so dass ich nicht in einem ereignisgesteuerten Modell bin? Ich sehe es nicht, aber das wäre perfekt. – shino