Tiempo de espera de Python

He estado buscando por todas partes un buen script de tiempo de espera que puede matar un hilo si ha estado activo durante más de X segundos, pero todos los ejemplos que he visto tienen fallas que no siempre lo detienen. Usando thread.join (x) termina venciendo el propósito de ser un hilo.

El único ejemplo decente que he encontrado es Timeout en una llamada de función y que no está exento de defectos.

¿Alguien sabe de una mejor manera de hacer esto?

Vea mi respuesta a Python: cómo enviar paquetes en varios subprocesos y luego el subproceso se elimina automáticamente : hay un fragmento con la clase InterruptableThread y un ejemplo que anula otro subproceso después del tiempo de espera: exactamente lo que desea.

También hay una receta de Python similar en el estado activo.

Sé que esto podría no ser lo que quieres, pero ¿has considerado el enfoque de la señal? Tiempo de espera en una llamada de función http://docs.python.org/library/signal.html#example

Puede establecer una señal de alarma al comienzo de la ejecución del hilo y luego detener el hilo en el controlador de señales.