2016-07-12 11 views
1

私はpythonを使用してアラームを出していますが、私はアラーム時間を待つためにtime.sleep()を使用しています。しかし、コンピュータをサスペンドするとスリープも中断され、コンピュータを再びオンにすると意図したとおりにアラームが鳴ります。Pythonを使用してコンピュータの停止を検出するにはどうすればよいですか?

コンピュータが中断されるタイミングを検出し、可能でない場合には中断されたことを検出する方法が必要です。タイマーを正しく実装できます。

どのようにこれをPythonで行うことができますか?

+0

これは、使用しているオペレーティングシステムによって異なる場合があります。あなたは何を使うのですか? – Ohumeronen

+0

長時間寝ている代わりに、短時間寝てから時間をチェックすることができます。 – syntonym

+0

私はLinuxを使用しています。短時間スリープしてチェックすると、処理コストが大幅に増加します...もう1つの方法はありますか? 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それはありません。あなたはそれを事実としてチェックすることができます。コンピュータがサスペンドされた場合、Xは非常に大きく、おそらく数分です。 – Andrey

関連する問題