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

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

LuckyNOOB

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

f22

Codeby Academy
Gold Team
05.05.2019
1 841
225
BIT
1 045
Добрый день, нужно выполнить функцию либо по истечению 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
 
Последнее редактирование:

LuckyNOOB

Green Team
28.03.2018
51
3
BIT
1
Можно воспользоваться библиотекой 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
Все супер, но в таком случае скрипт очень сильно нагружает проц, если способ уменьшить затраты?
 

f22

Codeby Academy
Gold Team
05.05.2019
1 841
225
BIT
1 045
скрипт очень сильно нагружает проц
Чем же это он нагружает, интересно?

Попробуй так
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()
 
Мы в соцсетях:

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