如何在Python中获取以毫秒为单位的当前时间?
time.time()
可能提供比datetime.utcnow()
某些平台和python版本更差的精度。
如何在Python中获取以毫秒为单位的当前时间?
time.time()
可能提供比datetime.utcnow()
某些平台和python版本更差的精度。
Answers:
根据我上面的@samplebias的评论,这是我需要做的:
import time
millis = int(round(time.time() * 1000))
print millis
快点 谢谢大家,为您的大脑屁感到抱歉。
要重用:
import time
current_milli_time = lambda: int(round(time.time() * 1000))
然后:
>>> current_milli_time()
1378761833768
round
?看来int(time.time() * 1000)
够了吗?
.utcnow()
使用GetSystemTimeAsFileTime()
在Windows上最近CPython的。不会time.clock()
(QueryPerformanceCounter()
)引入更多的噪声,以至于无法降低噪声?请参见精度与精度不相同。
time.time()
可能只提供秒的分辨率,毫秒的首选方法是datetime
。
from datetime import datetime
dt = datetime.now()
dt.microsecond
def TimestampMillisec64():
return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000)
.total_seconds()
产生(可能)更好的精度的公式:((td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**3
启用true除法),或者如果您想截断毫秒数,请使用// 10**3
。
如果您想在代码中使用一个简单的方法来返回带有datetime的毫秒数:
from datetime import datetime
from datetime import timedelta
start_time = datetime.now()
# returns the elapsed milliseconds since the start of the program
def millis():
dt = datetime.now() - start_time
ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0
return ms
start_time
= datetime(1970,1,1)
.utcnow()
代替,或者如果您不需要绝对时间,则可以使用time.monotonous()
。注意:由于启用了真除法some_int + dt.microseconds/ 1000.0
的公式( ) / 10**3
与之间的浮点运算,因此存在细微差别。请参阅相关答案中的明确公式和链接total_seconds()
如果您担心测量经过的时间,则应使用单调时钟(python 3)。该时钟不受系统时钟更新的影响,例如,您会看到NTP查询是否调整了系统时间。
>>> import time
>>> millis = round(time.monotonic() * 1000)
它提供了以秒为单位的参考时间,可用于以后进行比较以测量经过的时间。
如果您使用我的代码(如下所示),则时间将以秒为单位,然后在十进制后为毫秒。我认为Windows和Unix之间有区别-如果有区别,请发表评论。
from time import time
x = time()
print(x)
我的结果(在Windows上)是:
1576095264.2682993
编辑:没有区别:)谢谢tc0nn
/usr/local/opt/python/bin/python3.7 scratch.py 1577212639.882543
python3 scratch.py 1577212763.9136133
这些乘以1000毫秒的乘法对于解决或使某些先决条件可接受可能是不错的选择。它可以用来填补数据库中实际上从未使用过的空白。虽然,对于需要精确定时的实际情况,它最终会失败。我不建议任何人将这种方法用于需要执行操作或在特定时间进行处理的关键任务操作。
例如:在美国,双向ping是30-80毫秒...您不能将其四舍五入并有效地使用它。
我自己的示例要求每秒执行一次任务,这意味着如果我在响应第一个任务后将其四舍五入,仍然会导致处理时间乘以每个主循环周期。最终每60秒调用一次函数。每天大约是1440 ..不太准确。
对于那些希望寻求更准确推理而不是解决从未真正使用过数据库缺口的人们来说,这只是一个想法。
import time; ms = time.time()*1000.0