Naf*_*Kay 644
根据我上面的@samplebias评论,我需要的是以下内容:
import time
millis = int(round(time.time() * 1000))
print millis
Run Code Online (Sandbox Code Playgroud)
Quick'n'easy.谢谢大家,抱歉大脑放屁.
重用:
import time
current_milli_time = lambda: int(round(time.time() * 1000))
Run Code Online (Sandbox Code Playgroud)
然后:
>>> current_milli_time()
1378761833768
Run Code Online (Sandbox Code Playgroud)
Jas*_*tes 84
time.time()可能只给第二个解决方案,毫秒的首选方法是datetime.
from datetime import datetime
dt = datetime.now()
dt.microsecond
Run Code Online (Sandbox Code Playgroud)
use*_*131 40
def TimestampMillisec64():
return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000)
Run Code Online (Sandbox Code Playgroud)
zar*_*sht 17
从3.7版开始,您可以使用time.time_ns()从纪元开始经过十亿分之一秒的时间。所以你可以做
ms = time.time_ns() // 1000000
Run Code Online (Sandbox Code Playgroud)
以毫秒为单位获取时间作为整数。
Wil*_* Wu 13
只是示例代码:
import time
timestamp = int(time.time()*1000.0)
Run Code Online (Sandbox Code Playgroud)
输出:1534343781311
Cad*_*dey 11
另一种解决方案是您可以嵌入到自己的utils.py中的功能
import time as time_ #make sure we don't override time
def millis():
return int(round(time_.time() * 1000))
Run Code Online (Sandbox Code Playgroud)
hoo*_*man 10
如果您使用我的代码(如下),时间将以秒为单位显示,然后在小数点后显示为毫秒。我认为 Windows 和 Unix 之间存在差异 - 如果有,请发表评论。
from time import time
x = time()
print(x)
Run Code Online (Sandbox Code Playgroud)
我的结果(在 Windows 上)是:
1576095264.2682993
Run Code Online (Sandbox Code Playgroud)
编辑:没有区别:) 谢谢 tc0nn
如果你想在你的代码中使用一个简单的方法返回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
Run Code Online (Sandbox Code Playgroud)
我发现以毫秒为单位获取当前 UTC 时间的最简单方法是:
# timeutil.py
import datetime
def get_epochtime_ms():
return round(datetime.datetime.utcnow().timestamp() * 1000)
# sample.py
import timeutil
timeutil.get_epochtime_ms()
Run Code Online (Sandbox Code Playgroud)
如果您担心测量经过的时间,则应使用单调时钟 (python 3)。该时钟不受系统时钟更新的影响,例如您会看到 NTP 查询是否调整了您的系统时间。
>>> import time
>>> millis = round(time.monotonic() * 1000)
Run Code Online (Sandbox Code Playgroud)
它提供了一个以秒为单位的参考时间,可用于稍后进行比较以测量经过的时间。
在 3.7 之后的 Python 版本中,最好的答案是使用time.perf_counter_ns(). 如文档中所述:
time.perf_counter() -> float
返回性能计数器的值(以秒为单位),即具有最高可用分辨率的时钟以测量短持续时间。它确实包括睡眠期间经过的时间,并且是系统范围的。返回值的参考点未定义,因此只有连续调用结果之间的差异才有效。
time.perf_counter_ns() -> int
类似于 perf_counter(),但返回时间为纳秒
正如它所说,这将使用您的系统必须提供的最佳计数器,并且它专门用于测量性能(因此试图避免其他计时器的常见陷阱)。
它还为您提供了一个很好的纳秒整数,因此只需除以 1000000 即可获得毫秒数:
start = time.perf_counter_ns()
# do some work
duration = time.perf_counter_ns() - start
print(f"Your duration was {duration // 1000000}ms.")
Run Code Online (Sandbox Code Playgroud)
更新:感谢@neuralmer。
最 有效的方法 之一:
(time.time_ns() + 500000) // 1000000 #rounding last digit (1ms digit)
Run Code Online (Sandbox Code Playgroud)
或者
time.time_ns() // 1000000 #flooring last digit (1ms digit)
Run Code Online (Sandbox Code Playgroud)
在其他方法中,这两种方法都非常有效。
基准:
您可以在下面看到不同方法在我自己的机器上的一些基准测试结果:
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)```
Run Code Online (Sandbox Code Playgroud)
小智 5
在 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)
Run Code Online (Sandbox Code Playgroud)
随意使用您更喜欢的那个,我认为不需要比这更复杂的解决方案。
| 归档时间: |
|
| 查看次数: |
662867 次 |
| 最近记录: |