如何在Python中获得以毫秒为单位的当前时间?
当前回答
这些以毫秒为单位的1000的乘法对于解决或使某些先决条件可以接受可能是不错的。它可以用来填补数据库中从未真正使用过它的空白。不过,在需要精确计时的真实情况下,它最终会失败。我不建议任何人将这种方法用于需要在特定时间进行操作或处理的关键任务操作。
例如: 往返ping在美国是30-80毫秒…你不能简单地把它加起来并有效地使用它。
我自己的例子要求每秒钟都有任务,这意味着如果我在第一个任务响应后进行四舍五入,我仍然会导致处理时间乘以每个主循环周期。结果是每60秒调用一次函数。一天大约1440英镑。不太准确。
只是一个想法,让人们寻找更准确的推理,而不是解决从未真正使用过的数据库差距。
其他回答
如果你想在你的代码中使用一个简单的方法,用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
只是示例代码:
import time
timestamp = int(time.time()*1000.0)
输出: 1534343781311
在Python 3.8+中进行了一些测试后,我注意到这些选项给出了完全相同的结果,至少在Windows 10中是这样。
import time
# Option 1
unix_time_ms_1 = int(time.time_ns() / 1000000)
# Option 2
unix_time_ms_2 = int(time.time() * 1000)
请随意使用你更喜欢的一个,我不认为有任何需要比这个更复杂的解决方案。
更新:感谢@neuralmer。
最有效的方法之一:
(time.time_ns() + 500000) // 1000000 #rounding last digit (1ms digit)
or
time.time_ns() // 1000000 #flooring last digit (1ms digit)
在其他方法中,这两种方法都非常有效。
基准:
你可以在我自己的机器上看到一些不同方法的基准测试结果:
import time
t = time.perf_counter_ns()
for i in range(1000):
o = time.time_ns() // 1000000 #each 200 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = (time.time_ns() + 500000) // 1000000 #each 227 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = round(time.time_ns() / 1000000) #each 456 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = int(time.time_ns() / 1000000) #each 467 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = int(time.time()* 1000) #each 319 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = round(time.time()* 1000) #each 342 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)```
我发现的以毫秒为单位获取当前UTC时间的最简单方法是:
# timeutil.py
import datetime
def get_epochtime_ms():
return round(datetime.datetime.utcnow().timestamp() * 1000)
# sample.py
import timeutil
timeutil.get_epochtime_ms()
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录