@StrangeDylan

Как сделать таймер для ввода сообщения?

Мне нужно, что бы человеку давалось 5 секунд на то, что бы ввести какой либо текст. Если за 5 секунд он этого не сделает, то выполнение программы должно остановится. Но, программа останавливается только если успеть что либо ввести, при истечении 5 секунд программа продолжает работу.
import asyncio
from aioconsole import ainput

async def main():
    async def input():
        x = await ainput()


    try:
        await asyncio.wait_for(input(), timeout=5)
    except asyncio.TimeoutError:
        print('timeout')


loop = asyncio.get_event_loop()
loop.run_until_complete(main())
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
Jourloy
@Jourloy
NodeJS, Python, go to Golang
Нашел вот здесь
from threading import Thread
import time
import os

answer = None

def ask():
    global start_time, answer
    start_time = time.time()
    answer = input("Enter a number:\n")
    time.sleep(0.001)


def timing():
    time_limit = 5
    while True:
        time_taken = time.time() - start_time
        if answer is not None:
            print(f"You took {time_taken} seconds to enter a number.")
            os._exit(1)
        if time_taken > time_limit:
            print("Time's up !!! \n"
                  f"You took {time_taken} seconds.")
            os._exit(1)
        time.sleep(0.001)

t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ovision Санкт-Петербург
от 100 000 до 300 000 ₽
Сбер Санкт-Петербург
от 100 000 до 100 000 ₽