aguardando entrada do usuário em encadeamento separado

Eu estou tentando realizar uma maneira de gerar um segmento que aguarda a entrada do usuário; se nenhuma entrada for inserida em 10 segundos, eu quero que o script elimine o segmento gerado e continue o processamento. Eu tenho uma maneira de obter a entrada de volta do segmento se o texto é inserido, mas não tenho como deixar o tempo limite matar o segmento recém-gerado.

No exemplo abaixo é o mais próximo que eu vim. Eu digo ao segmento recém-criado que ele é um daemon e ele sairá quando o script principal sair. O problema que tenho com isso é que o segmento continuará aguardando até que o script seja encerrado ou o usuário tenha inserido alguma coisa.

shared_var = ['1']
def run(ref):
    ref[0] = raw_input("enter something: ")
    print "shared var changed to '%s'" % (ref[0])

thread = threading.Thread(target=run, args=(shared_var,))
thread.daemon = True  
thread.start()
time.sleep(10)  # simplified timeout

#Need some way to stop thread if no input has been entered
print "shared var = " + shared_var[0]

Eu sei que matar um fio abruptamente não é o melhor caminho a seguirLink Relacionado), mas eu não sei como interromper o novo thread esperando na raw_input