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



@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())


Решения вопроса 0


Ответы на вопрос 1



@Jourloy

Нашел вот здесь

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()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *