Invece di eseguire reactor.run(), mi piacerebbe chiamare qualcos'altro (non so, come reactor.runOnce() o qualcosa) occasionalmente mantenendo il mio ciclo principale. C'è una best practice per questo con twisted?Qual è il modo migliore per controllare il reattore di Twisted in modo che non sia bloccante?
risposta
Sì. La migliore pratica è che questa è una cattiva idea e che non hai mai realmente bisogno di farlo. Non funziona con tutti i reattori, e certamente non puoi avere due librerie diverse che vogliono farlo.
Perché è necessario mantenere il proprio ciclo principale? Le probabilità sono, è qualcosa come "Voglio lavorare con PyGame" o "Sto scrivendo un programma GUI e voglio usare il mainloop di GTK" o "Sto usando Twisted da Blender e ha la sua gestione degli eventi". Se questo è il caso, dovresti porre questa domanda specifica, perché ognuno di questi ha la sua risposta.
Se si assolutamente necessario fare questo (e, ancora: non si) il modo per farlo è quello di chiamare reactor.iterate()
periodicamente. Ciò sarà lento, interromperà la gestione dei segnali e avrà una semantica stupefacente rispetto a reactor.stop()
. Introdurrà molti bug nel tuo programma che altrimenti non sarebbero presenti, e quando hai bisogno di aiuto per diagnosticarli, se chiedi a qualcuno del team di sviluppo di Twisted, la prima cosa che ti diranno è "smetti di farlo, non Non c'è bisogno di farlo ".
- 1. Qual è il modo migliore per garantire che un argomento Function sia serializzabile?
- 2. Qual è il modo migliore per documentare il codice f #?
- 3. Qual è il modo migliore per rilevare il colore bianco?
- 4. Qual è il modo migliore per riutilizzare il parser Lua?
- 5. Qual è il modo migliore per analizzare questo in C++?
- 6. Qual è il modo migliore per convertire enum in stringa?
- 7. Qual è il modo migliore per ritagliare un'immagine in HTML?
- 8. Qual è il modo migliore per aggiornare l'entità in JPA
- 9. Qual è il modo migliore per convertire String in ByteString
- 10. Qual è il modo migliore per creare frecce in inkscape?
- 11. Qual è il modo migliore per scrivere commenti in C?
- 12. Qual è il modo migliore per affermare l'uguaglianza di numpy.array?
- 13. Qual è il modo migliore per determinare che Tomcat è stato avviato con node.js
- 14. Qual è il modo migliore per tracciare l'esecuzione di JavaScript?
- 15. Qual è il modo migliore per attivare le stampe Python?
- 16. Qual è il modo migliore per testare un'app per rails?
- 17. Qual è il modo migliore per trovare il codice che blocca il thread principale?
- 18. Qual è il modo migliore per creare software che non richieda il più recente glibc?
- 19. Qual è il modo migliore per estendere le funzionalità?
- 20. pitone: qual è il modo migliore per controllare più chiavi esiste in un dizionario?
- 21. Qual è il modo migliore per organizzare più sottoview?
- 22. Qual è il modo migliore per controllare una stringa vuota in Delphi?
- 23. PHP: qual è il modo migliore per controllare l'uguaglianza di $ _SERVER ['HTTP_REFERER']?
- 24. Qual è il modo corretto per chiudere una connessione SSH a conchiglia Twisted?
- 25. Qual è il modo migliore per impostare MACOSX_DEPLOYMENT_TARGET?
- 26. Qual è il modo migliore per controllare EOF e l'errore di fgetc()?
- 27. Qual è il modo migliore per attuare questo GetHashCode composito()
- 28. Qual è il modo migliore per leggere i file in un'app basata su EventMachine?
- 29. Qual è il modo migliore per reimparare una lingua?
- 30. Qual è il modo migliore per autorizzare una chiavetta USB
Sto lavorando con pyglet. È troppo distorto è così; sembra rendere le cose molto più semplici, solo non quello che voglio fare. Probabilmente hai ragione sul fatto che non ho bisogno di scrivere il mio programma al di fuori del paradigma di reactor.run di twisted, ma ciò non cambia il fatto che non sarebbe una soluzione molto elegante per me. Preferirei scrivere di nuovo il mio personale di basso livello piuttosto che occuparmene. – shino
Questo significa che vuoi pygletreactor: http://code.google.com/p/pyglet-twisted/ –
Aspetta: c'è un modo per usare il reattore pyglet in modo che non si trovi in un modello guidato da eventi? Non lo vedo, ma sarebbe perfetto. – shino