Anche se si ottiene quella che è probabilmente una risposta perfettamente ragionevole, esiste un altro approccio: non è necessario utilizzare il ciclo di asyncore di per sé. Basta chiamare asyncore.loop con un timeout pari a zero e un conteggio pari a 1, che interrompe l'iterazione (e quindi rende il nome della funzione completamente fuorviante) e esegue il polling dei socket una sola volta. Chiamalo tutte le volte che ti servono.
Non so nulla del supporto asincrono di glib, ma se richiede threadpotete comunque ottenere prestazioni migliori usando asyncore in questo modo poiché utilizzerà select o poll e non avrà bisogno di generare thread aggiuntivi.
Perché dovresti usare asyncore quando hai glib? glib sembra molto più capace ... –