You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统中连续调用perf_counter_ns返回相同值的原因及适配方案咨询

Windows系统中连续调用perf_counter_ns返回相同值的原因及适配方案咨询

我最近碰到个挺挠头的问题,先给大家看一段我写的测试代码:

from time import *
def test_time(f, c):
    cnt = 0
    for i in range(c):
        ps, ts = f(), f()
        if not ps - ts:
            cnt += 1
    return cnt

if __name__ == '__main__':
    res = test_time(perf_counter_ns, 1_000_000)
    print(res)  # 通常返回的计数会超过50万

原本我以为这段代码跑出来的cnt值会接近0,毕竟连续两次调用高精度时钟,理论上应该能捕捉到时间差才对。但实际在Windows系统上运行时,每次的结果都超过500,000;换到Linux上跑却完全不会有这个情况。

我了解Windows的时钟输出分辨率被限制在100ns的增量,但还是搞不懂:为什么连续两次调用perf_counter_ns()会这么频繁地返回相同的值?而且我已经试过Python 3.11、3.12和3.13三个版本,还特意把Windows上的Python进程限制到单核心运行、调整了进程优先级,结果都没对重复值的数量产生明显影响。

之前我看到过关于Python高精度时钟的相关内容,虽然它对精度时间测量的整体情况讲得很全面,但并没有解决我这个更具体的疑问——为什么Windows上连续调用perf_counter_ns会出现大量重复值,Linux却不会?

有没有大佬能帮我解释下这个现象的原因,或者有没有什么办法能让Windows上的测试结果更接近预期?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 06:40:28