文件似乎在创建之前就被加上了时间戳

File seems to be timestamped before it is created

以下测试总是失败(这在 linux 系统上运行,问题与其他操作系统无关):

    from time import time
    from decimal import Decimal
    from pathlib import Path

    def test_timing():
        start = Decimal(time())
        p = Path(__file__).parent / 'testfile.txt'  # does not yet exist
        p.touch()
        mt = p.stat().st_mtime
        p.unlink()  # unlinked before the failing assert
>       assert start <= mt
E       AssertionError: assert Decimal('1640930671.75709438323974609375') <= 1640930671.7534654

差距总是大约 3 到 7 毫秒。

Decimal(time()) 开始 returns 的时间戳怎么可能比在它之后两行创建的文件

python 时间戳和 linux' 之间是否有偏移? python 是否会在 Decimal(time()) 调用完成之前继续创建文件?我在这里错过了什么?

编辑:我应该提到它是 ext4 文件系统。

ext4 文件系统使用 current_fs_time 获取内核时间戳。为了提高效率,内核时间戳是一个缓存值,仅在调度程序间隔时更新,大约为 10 毫秒。所以,当它被存储时,时间可能已经过去了 10 毫秒。

附带说明一下,将时间戳转换为 Decimal 没有意义。来自 C 的值是一个双精度值,它只包含大约 17 位数字。这意味着您可以精确到微秒。转换为 Decimal 不会获得任何额外的精度;其他数字基本上是随机的。