Aunque haya obtenido una respuesta que es perfectamente razonable, hay otro enfoque: no necesita usar el bucle de asyncore per se. Simplemente llame a asyncore.loop con un tiempo de espera cero y un recuento de 1, lo que detiene su iteración (y por lo tanto hace que el nombre de la función sea completamente erróneo) y sondea los sockets solo una vez. Llámalo tan a menudo como lo necesites.
No sé nada sobre la compatibilidad asincrónica de glib, pero si requiere subprocesos puede obtener un mejor rendimiento si utiliza asyncore de esta manera ya que usará seleccionar o sondear y no necesitará engendrar hilos adicionales.
¿Por qué usarías asyncore cuando tienes glib? glib parece mucho más capaz ... –