Как я получаю монотонные продолжительности времени в Python?

MSDN предоставляет некоторые довольно четкие рекомендации об этом: http://msdn.microsoft.com/en-us/library/ms973919.aspx

54
задан Thomas 29 July 2009 в 23:23
поделиться

1 ответ

Эта функция настолько проста, что вы можете использовать ctypes для доступа к ней:

#!/usr/bin/env python

__all__ = ["monotonic_time"]

import ctypes, os

CLOCK_MONOTONIC_RAW = 4 # see <linux/time.h>

class timespec(ctypes.Structure):
    _fields_ = [
        ('tv_sec', ctypes.c_long),
        ('tv_nsec', ctypes.c_long)
    ]

librt = ctypes.CDLL('librt.so.1', use_errno=True)
clock_gettime = librt.clock_gettime
clock_gettime.argtypes = [ctypes.c_int, ctypes.POINTER(timespec)]

def monotonic_time():
    t = timespec()
    if clock_gettime(CLOCK_MONOTONIC_RAW , ctypes.pointer(t)) != 0:
        errno_ = ctypes.get_errno()
        raise OSError(errno_, os.strerror(errno_))
    return t.tv_sec + t.tv_nsec * 1e-9

if __name__ == "__main__":
    print monotonic_time()
77
ответ дан 7 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: