网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Python >

解决Python time.sleep()函数短时间延时不准确,实现

时间:2025-04-14 17:13

人气:

作者:admin

标签:

导读:time.sleep()函数能够暂停当前线程的运行,实现延时功能,而window系统中使用time.sleep()函数暂停当前线程并再次执行当前线程需要一定的时间(大约在ms级)。 time.perf_counter()函数的返回值...

time.sleep()函数能够暂停当前线程的运行,实现延时功能,而window系统中使用time.sleep()函数暂停当前线程并再次执行当前线程需要一定的时间(大约在ms级)。
time.perf_counter()函数的返回值为系统已经运行的时间(float类型,单位:s),该时间具有非常高的分辨率和精度,因此可以测量较短的持续时间,测量范围包含time.sleep()的休眠时间。
time.perf_counter_ns()函数则是将返回值改为了int类型,单位变为了ns。

不使用time.sleep()函数的运行情况

点击查看代码
import time
a = time.perf_counter_ns()
# time.sleep(0.001)
b = time.perf_counter_ns()
print("a = %.4f" % (a/1000000), " ms\n", "b = %.4f" % (b/1000000), " ms", sep='')
print("b-a = %.4f" % ((b-a)/1000000), "ms")
运行结果为:
a = 960481122.4417 ms
b = 960481122.4420 ms
b-a = 0.0003 ms
不使用time.sleep()函数时,多次尝试后,执行time.perf_counter_ns()函数所耗费的时间均<0.001ms。

使用time.sleep()函数延时1ms的运行情况

点击查看代码
import time
a = time.perf_counter_ns()
sleep(0.001)
b = time.perf_counter_ns()
print("a = %.4f" % (a/1000000), " ms\n", "b = %.4f" % (b/1000000), " ms", sep='')
print("b-a = %.4f" % ((b-a)/1000000), "ms")
运行结果为:
a = 960910032.3047 ms
b = 960910046.0363 ms
b-a = 13.7316 ms
当使用time.sleep()函数延迟1ms时,实际经过了>10ms,多次尝试的结果均在10ms左右,这表明time.sleep()函数不能准确实现ms级的短时间延时。

解决方法:不采用time.sleep()函数,直接通过多次循环实现延时

点击查看代码
import time
def delay_ms(t):  # 传入的参数为延时的时间(float类型,单位ms),返回循环次数
    if t <= 0:
        return 0
    t0 = int(1000000 * t)
    t1 = time.perf_counter_ns()
    t2 = time.perf_counter_ns()
    t3 = 0
    i = 0
    while True:
        i += 1
        t2 = time.perf_counter_ns()
        t3 = t2 - t1
        if t3 >= t0:
            return i
a = time.perf_counter_ns()
delay_ms(100.01)  # 延时时间,单位ms
b = time.perf_counter_ns()
print("a = %.4f" % (a/1000000), " ms\n", "b = %.4f" % (b/1000000), " ms", sep='')
print("b-a = %.4f" % ((b-a)/1000000), "ms")
运行结果为:
a = 961739056.7461 ms
b = 961739156.7622 ms
b-a = 100.0161 ms
目标延时为100.01ms,实际延时为100.0161ms,相差<0.01ms,该延时方法不会因为延时时间长短而影响精度。 (注:Window11系统,i5 13400,Python3.10)
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信