2010-11-14 10 views

risposta

11

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 ".

+0

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

+3

Questo significa che vuoi pygletreactor: http://code.google.com/p/pyglet-twisted/ –

+0

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

Problemi correlati