2017-01-02 18 views
2

ラズベリーパイのあるコードを実行するまでに経過した秒数を数える必要があります。 Pythonで次のように通常、私はそれを行うだろう:デバイスのエポック時間が信頼できないときにPythonで時間を測定する

start = time.time() 
execute_my_function() 
end = time.time() 
elapsed = end - start 

しかし、ラズベリーPiはRTCが含まれていませんし、代わりにNTPに依存しています。これは、ブート後の最初の少しの間、システム時間が1970年1月1日であることを意味するので、「終了」と「開始」の違いはしばしば約47年になります。

システム時間が信頼できない場合(「timeit」モジュールが「時間」に依存するため、どちらでも動作しません)、システム時間が信頼できない場合、経過時間を秒単位で測定するにはどうすればよいですか?それは完全に正確である必要はありません - 2つ目または2つが多すぎるか小さすぎても問題ありません。

編集:私はシステムの時間とは無関係だと私は思うが、私は読んだ/ proc /稼働時間のようなハックを作ったが、私はちょっとこのように感じる。私はOSに依存しない解決策がいくらか存在することを望んでいる。 start_timeは意味のある値になるまで

+0

は、おそらくあなたは待つことができます。どのようにそれを行うことができますか分かりませんが、方法があるかもしれません。そして、時間が1月1日に等しくないまで遅れたループで1つの汚い方法が待っています –

+0

あなたは起動後すぐにプログラムを起動する必要がありますか? NTPに依存することはできますか? 'systemd'などを使用していますか?依存関係としてNTPを指定することができます。 – Raito

+0

残念ながらNTPに頼ることはできません。このシステムは、起動時を含めて、毎回オフラインになっても実行されるようになっています。 –

答えて

0

あなたは、あなたのプログラムウェイトを持つことができます:あなたのコードが実行を開始する前に、NTPの同期が完了するまで

while time.time() < 1e6: 
    time.sleep(10) 
関連する問題