【发布时间】:2011-11-17 07:26:17
【问题描述】:
有没有一种简单的方法/模块可以正确测量python中的经过时间?我知道我可以简单地调用time.time() 两次并获取差额,但是如果更改系统时间会产生错误的结果。诚然,这种情况并不经常发生,但它确实表明我测量的是错误的东西。
使用time.time() 来衡量持续时间是令人难以置信的迂回考虑。您获取两个绝对时间测量值的差异,这两个绝对时间测量值依次由持续时间测量(由计时器执行)和已知绝对时间(手动或通过 ntp 设置)构成,您根本不感兴趣。
那么,有没有办法直接查询这个“定时器时间”呢?我想它可以表示为没有有意义的绝对表示的毫秒或微秒值(因此不需要用系统时间进行调整)。环顾四周,这似乎正是 System.nanoTime() 在 Java 中所做的,但我没有找到相应的 Python 函数,尽管它应该(硬件技术上)比 time.time() 更容易提供。
编辑:为避免混淆并解决以下答案:这与 DST 更改无关,我也不想要 CPU 时间 - 我想要经过的物理时间。它不需要非常细粒度,甚至不需要特别准确。它只是不应该给我负持续时间,或者持续时间相差几个数量级(高于粒度),只是因为有人决定将系统时钟设置为不同的值。以下是 Python 文档对 'time.time()' 的评价:
这正是我想要避免的,因为它会导致奇怪的事情,比如时间计算中的负值。我现在可以解决这个问题,但我相信在可行的情况下学习使用正确的解决方案是个好主意,因为有一天这些杂物会卷土重来。
Edit2:一些研究表明,您可以像我在 Windows 中使用 GetTickCount64() 一样获得与系统时间无关的测量值,在 Linux 下,您可以在 times() 的返回值中获得它。但是,我仍然找不到在 Python 中提供此功能的模块。
【问题讨论】:
-
如果你想对某些东西进行基准测试,你应该使用
timeit。 -
您可能会遇到Microsoft Minute。
标签: python windows time duration