• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

python ожидание таймера, либо нажатия клавиши

LuckyNOOB

Green Team
28.03.2018
51
3
BIT
1
Добрый день, нужно выполнить функцию либо по истечению 10сек, либо по нажатию клавиши. Думал о потоках, но не уверен, что знаю как написать грамотно.
 
Добрый день, нужно выполнить функцию либо по истечению 10сек, либо по нажатию клавиши. Думал о потоках, но не уверен, что знаю как написать грамотно.
Можно воспользоваться библиотекой keyboard
Python:
import datetime
import keyboard

def check_state(cur_time=datetime.datetime.now()) -> None:
    new_time = cur_time + datetime.timedelta(seconds=10)
    print("Для продолжения нажмите Enter...")
    while datetime.datetime.now() < new_time:
        if keyboard.is_pressed('Enter'):
            break
    else:
        print("timeout")

check_state()

Функция завершится, если пройдёт больше 10 секунд после её вызова или при нажатии Enter
 
Последнее редактирование:
Можно воспользоваться библиотекой keyboard
Python:
import datetime
import keyboard

def check_state(cur_time=datetime.datetime.now()) -> None:
    new_time = cur_time + datetime.timedelta(seconds=10)
    print("Для продолжения нажмите Enter...")
    while datetime.datetime.now() < new_time:
        if keyboard.is_pressed('Enter'):
            break
    else:
        print("timeout")

check_state()

Функция завершится, если пройдёт больше 10 секунд после её вызова или при нажатии Enter
Все супер, но в таком случае скрипт очень сильно нагружает проц, если способ уменьшить затраты?
 
скрипт очень сильно нагружает проц
Чем же это он нагружает, интересно?

Попробуй так
Python:
import datetime
import keyboard
import time

def check_state(cur_time=datetime.datetime.now()) -> None:
    new_time = cur_time + datetime.timedelta(seconds=10)
    print("Для продолжения нажмите Enter...")
    while datetime.datetime.now() < new_time:
        if keyboard.is_pressed('Enter'):
            break           
        time.sleep(0.5)
    else:
        print("timeout")

check_state()
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!