比较时间与亚秒精度

时间:2013-08-11 05:37:01

标签: python benchmarking

如何获得纪元以来的毫秒数?

请注意,我想要实际的毫秒,而不是秒乘以1000.我正在比较需要不到一秒钟且需要毫秒精度的东西的时间。 (我看了很多答案,他们似乎都有* 1000)

我将POST请求中的时间与服务器上的结束时间进行比较。我只需要两次使用相同的格式,不管是什么。我认为unix时间会起作用,因为Javascript有一个功能来获得

6 个答案:

答案 0 :(得分:29)

time.time() * 1000 尽可能提供毫秒精度。

答案 1 :(得分:18)

int(time.time() * 1000)会做你想要的。 time.time()通常会返回一个浮点值,其精度为自epoche以来的秒数,因此乘以它不会对精度造成任何影响。

@kqr的误导性回答的另一个词:time.clock()并没有给你时间的时间。它为您提供了在Unix上运行CPU的时间,或者自Windows首次调用该函数以来所经过的时间,请参阅python docs

同样,文档声明time.time()无法保证给你ms精度。虽然这个陈述主要是为了确保你不要依赖嵌入式或历史硬件上的这种精度,而且我不知道任何一个例子,你实际上不会得到ms精度。

答案 2 :(得分:14)

使用datetime

>>> import datetime
>>> delta = datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)
>>> delta
datetime.timedelta(15928, 52912, 55000)
>>> delta.total_seconds()
1376232112.055
>>> delta.days, delta.seconds, delta.microseconds
(15928, 52912, 55000)

答案 3 :(得分:14)

我看到很多人建议time.time()。虽然time.time()是衡量实际时间的准确方法,但并不能保证精确到毫秒级!来自文档:

  

请注意,即使时间始终作为浮点数返回,但并非所有系统都提供的精度高于1秒。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。

这是比较两次时所需的程序!它可以用很多有趣的方式炸毁,而你无法分辨发生了什么。事实上,当比较两次时,你真的不需要知道它是什么时间,只是两个值具有相同的起点。为此,time库为您提供了另一个过程:time.clock()。文档说:

  

在Unix上,将当前处理器时间返回为以秒为单位的浮点数。精度,实际上是“处理器时间”含义的定义,取决于同名C函数的精度,但无论如何,这是用于对Python或时序算法进行基准测试的函数

     

在Windows上,此函数返回自第一次调用此函数以来经过的挂钟秒,作为浮点数,基于Win32函数QueryPerformanceCounter()。 分辨率通常优于1微秒

使用time.clock()


或者,如果您只想测试代码的运行速度,可以方便自己使用timeit.timeit()为您完成所有测量,并且是衡量经过时间的事实上的标准方法在代码执行中。

答案 4 :(得分:0)

Python 3.7 引入了time.time_ns()来最终解决此问题,因为如上所述的time.time()对此没有用。

将时间返回自纪元以来的整数纳秒。

https://www.python.org/dev/peps/pep-0564/
https://docs.python.org/3/library/time.html#time.time_ns

答案 5 :(得分:-5)

import datetime
time = datetime.datetime.now()
ms = time.microsecond

返回一个6位数字,微秒。最后3位数字在PC中无用,因为它使用的是滴答,慢于微秒。前3位数字应该足以满足您的需求。