Python 嵌入。 timestamp() return 多秒内的同一时间

Python embedded. timestamp() return same time over multiple seconds

我已经实现了回调系统。我想在调用该函数时以 unix 纪元显示时间。

例如:

from datetime import datetime

def my_callback():
    print(datetime.now().timestamp())
    print(datetime.now())

游戏中:

First call:
1614270080.0
2021-02-25 19:22:14.304776

Second call after a second:
1614270080.0
2021-02-25 19:22:15.498516

Last call after a 2 seconds:
1614270080.0
2021-02-25 19:22:17.701154

为什么 datetime.now().timestamp() return 同时? time.time()

同样的问题

我用Python 3.8 x32

timestamp的类型是float,是Pythonbuild宽度的浮点类型。 32 位浮点数不足以表示具有秒精度的时间戳:

>>> import struct
>>> def as_f32(num: float): return struct.unpack('f', struct.pack('f', num))[0]
>>> def as_f64(num: float): return struct.unpack('d', struct.pack('d', num))[0]
>>> # 32-bit expressible timestamps in a 10 second range
>>> set(map(as_f32, range(1614270075, 1614270085)))
{1614270080.0}
>>> # 64-bit expressible timestamps in a 10 second range
>>> set(map(as_f64, range(1614270075, 1614270085)))
{1614270075.0, 1614270076.0, 1614270077.0, 1614270078.0, 1614270079.0, 1614270080.0, 1614270081.0, 1614270082.0, 1614270083.0, 1614270084.0}

如果需要全精度,请使用 64 位版本。