Linuxで GetTickCount()
に相当するものを探しています。
現在私はPythonの time.time()
を使用していますが、これはおそらく gettimeofday()
。私が心配しているのは、返された時刻(UNIXエポック)が、NTPなどによってクロックが乱された場合、不規則に変わる可能性があることです。一定の割合で増加するだけの単純なプロセスまたはシステムウォールタイムで十分です。
CまたはPythonでそのような時間関数は存在しますか?
CLOCK_MONOTONIC を使用できます。 C:
struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) {
//error
}
Python way- Pythonで単調な持続時間を取得するにはどうすればよいですか)については、この質問を参照してください
これはうまくいくようです:
#include <unistd.h>
#include <time.h>
uint32_t getTick() {
struct timespec ts;
unsigned theTick = 0U;
clock_gettime( CLOCK_REALTIME, &ts );
theTick = ts.tv_nsec / 1000000;
theTick += ts.tv_sec * 1000;
return theTick;
}
はい、get_tick()は私のアプリケーションのバックボーンです。各「タスク」ごとに1つの状態マシンで構成されます。たとえば、スレッドを使用せずにマルチタスクを実行でき、プロセス間通信非ブロッキング遅延を実装できます。
clock_gettime(CLOCK_MONOTONIC, &tp);
を使用してください。この呼び出しは、WindowsのGetTickCount()のようにシステム時刻の調整の影響を受けません。
はい、カーネルには高解像度のタイマーがありますが、それは異なります。これを移植可能な方法でラップする奇妙なプロジェクトのソースを確認することをお勧めします。
C/C++から私は通常_#ifdef
_これをLinuxでgettimeofday()
を使用してマイクロ秒単位の解像度にしています。エポックもダブルを受け取るので、私はよくこれを秒の端数として追加します。