Как засечь таймер и после его истечения сделать автоматическое действие? Питон

Хочу написать код который измеряет скорость печати на клавиатуре, для этого у меня есть текст который придётся пользователю печатать как можно быстрее, надо засечь таймер в 10 секунд и после их истечения надо чтобы нажался автоматически enter. Так пользователь введёт весь текст который он успел напечатать в input


Ответы (2 шт):

Автор решения: Narnik Gamarnik
from time import sleep
    
def func():
    result = input()
    sleep(10)
    return result
→ Ссылка
Автор решения: Andy Pavlov

Могу предложить вариант с "костылем".

Функция input() требует обязательного нажатия enter для финализации ввода. Можно через threading.Timer создать поток, который через 10 секунд будет просить нажать enter. При этом считать будем скорость не за 10 секунд, а по факту за промежуток времени определяемый с помощью time.time().

import threading
import time

waiting = 10  # секунды
t1 = threading.Timer(waiting, print, args=['Время вышло, нажмите Enter'])
begin = time.time()
t1.start()
text = input('Введите текст:\n')
t1.cancel()
time_count = time.time() - begin
print(f'Скорость ввода {len(text)/time_count} символов в секунду')
→ Ссылка