hace ya mucho tiempo mostré una implementación de como lo resolvía.
#-*- coding:utf-8 -*-
import msvcrt
import time
def input_tiempo(aviso = ">>>",duracion=5):
global nombre
nombre=""
print (aviso)
finaliza = time.time() + duracion
while time.time()< finaliza:
if msvcrt.kbhit():
letra= msvcrt.getche().decode('ASCII')
if letra == "\r":
break
else:
nombre+= letra
q=input_tiempo("Escribe tu nombre: ")
if nombre != "":
print("\nHola ¡¡ {} !!".format(nombre))
else:
print("Perdiste")
input()