porque los threads de python son algo extraños solo se puede ejecutar un thread a la vez y luego se bloquea para ejecutar otro, esto es lo que hacen los threads de forma oculta por alguna razon python no lo hace y hay que hacer todo este proceso a mano
http://mundogeek.net/archivos/2008/04/18/threads-en-python/
si quieres evitar esto crea otro proceso
cuando dices avanza estas imaginando el proceso como algo independiente del thread y no es asi cuando uno avanza el otro tambien.