Interrumpir programáticamente raw_input

¿Hay alguna manera de interrumpir programáticamente la entrada_de_put de Python? Específicamente, me gustaría presentar un mensaje al usuario, pero también escuchar en un descriptor de socket (usando select, por ejemplo) e interrumpir el mensaje, generar algo y volver a mostrar el mensaje si los datos entran en el socket.

La razón para usar raw_input en lugar de simplemente hacer select en sys.stdin es que me gustaría usar el módulo readline para proporcionar la funcionalidad de edición de línea para el indicador.

Por lo que sé … “Una especie de”.

raw_input está bloqueando, por lo que la única forma en que puedo pensar es generar un subproceso / subproceso para recuperar la entrada, y luego simplemente comunicarme con el subproceso. Es un truco bastante sucio (al menos me parece así), pero debería funcionar en varias plataformas. La otra alternativa, por supuesto, es usar el módulo de curses en Linux o obtener este para Windows.