我想记录实际的时间花了多长时间。目前,我正在这样做:
startTime = time.time() someSQLOrSomething() print "That took %.3f seconds" % (time.time() - startTime)
但是,如果在运行SQL查询(或任何其他查询)时调整了时间,那将失败(产生不正确的结果)。
我不想仅仅对其进行基准测试。我想将其记录在实时应用程序中,以便查看实时系统上的趋势。
我想要类似clock_gettime(CLOCK_MONOTONIC,…)的东西,但是在Python中。并且最好不必编写一个调用clock_gettime()的C模块。
该函数非常简单,您可以使用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()