2016-07-12 4 views
1

Я делаю сигнал тревоги с помощью python, и я использую time.sleep() для ожидания времени будильника. Но если я приостановил работу своего компьютера, сон тоже будет приостановлен, в результате чего будильник будет звучать после того, что было предназначено, если я снова включу компьютер.Как определить приостановку компьютера с помощью python?

Мне нужно, чтобы программа обнаружила, когда компьютер будет приостановлен, и если это невозможно, чтобы обнаружить, что оно было приостановлено, я смогу правильно реализовать таймер.

Как это можно сделать с помощью python?

+0

Я думаю, это может зависеть от операционной системы, которую вы используете. Что ты используешь? – Ohumeronen

+0

Вместо того, чтобы долго спать, вы можете поспать на короткое время и проверить время. – syntonym

+0

Я использую Linux. Сон в течение короткого времени и проверки увеличит стоимость обработки много ... есть ли другой способ сделать это? Даже не используя time.sleep() ... – lapisdecor

ответ

2

Это очень легко обнаружить, если он был вероятно приостановлено:

before = datetime.now() 
sleep(1) 
after = datetime.now() 

if (after - before).total_seconds() > X: 
    # suspended 

after - before никогда не будет точно 1 второе, но они не должны быть значительно больше, чем на 1 секунду. Вы можете поиграть, чтобы найти лучший X.

+0

Этот ответ одобрен, lapisdecor? Я думаю, что вычислительные накладные расходы этого решения не слишком высоки, не так ли? – Ohumeronen

+0

это потребовало бы, чтобы я заранее знал, что есть компьютерное расширение – lapisdecor

+0

@lapisdecor нет, это не так. Вы можете проверить его после factum. Если компьютер был приостановлен, X будет очень большим, возможно, минут. – Andrey

Смежные вопросы