当前位置: 首页 > 面试题库 >

如何在python中获得单调的持续时间?

秦育
2023-03-14
问题内容

我想记录实际的时间花了多长时间。目前,我正在这样做:

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()


 类似资料:
  • 我尝试了许多方法,但没有得到一个mp3文件的确切长度值。 随着电影: 我得到的结果是: 使用诱变剂: 我收到了另一个持续时间值: 使用windows media player打开文件时的实际持续时间值:2m49s 我不知道我的音频文件发生了什么,我测试了音乐网站上的一些文件,仍然得到了正确的值。这是我的音频文件

  • 给定2个日期,如何根据ISO 8601工期以年-月-日、时-分-秒格式计算它们之间的差异? 我只发现Java库可以在几天或更短的时间内提供差异。 鉴于月份和年份的天数不规则,我不知道如何计算月份和年份的差异。 平均持续时间。between接近,但它以小时分秒为单位给出结果: 也就是25533小时57分58秒 我想看看这样的东西: __年__月__天9小时57分58秒

  • 问题内容: 如何在不创建MediaPlayer实例的情况下获得mp3曲目的持续时间?我只需要在mp3文件列表中显示mp3歌曲的长度,所以我认为我不应该为列表中的每个音轨创建MediaPlayer对象 还有一个: 有时MediaPlayer会返回错误的歌曲持续时间(我认为是错误的,因为这些文件的比特率是动态的)。如何获得正确的歌曲时长? 问题答案: 您可以使用MediaMetadataRetriev

  • 问题内容: 在Java 8和更高版本中可用的新JSR 310 日期API(java.time包)中的类中,javadoc说: 此类以秒和纳秒为单位对时间量或时间量进行建模。 可以使用其他基于持续时间的单位(例如分钟和小时)来访问它 。此外,可以使用DAYS单位并将其视为等于24小时,因此忽略了夏时制的影响。 那么,为什么以下代码会崩溃? 这引发了: 那么从持续时间对象中提取分钟和小时的推荐方法是什

  • 对于Java8及更高版本中新的JSR 310 date API(Java.time包)中的类,javadoc表示: 那么,从duration对象中提取分钟和小时的推荐方法是什么?我们必须自己从秒数来计算吗?为什么要这样实施?

  • 我遇到了一个问题,我的MySQL表有一个存储UTC时间偏移的字段。该字段为时间类型。这是出于遗留原因,我无法将列类型更改为更好的表示形式。然而,MySQL支持这一点。它允许用户在时间字段中存储负值,以表示负时差。我使用querydsl生成实体类,并将该字段映射到java。sql。时间物体。现在,当DB中有负值时,我面临一个问题。爪哇。sql。Time类将任何负值转换为前一天的时间。例如,如果DB中