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

LuckyNOOB

Green Team
28.03.2018
49
3
Добрый день, нужно выполнить функцию либо по истечению 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()
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →

Популярный контент

🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab