解决Python time.sleep()函数短时间延时不准确,实现延时误差小于0.01ms ...

打印 上一主题 下一主题

主题 1918|帖子 1918|积分 5754

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
time.sleep()函数可以或许停息当前线程的运行,实现延时功能,而window体系中使用time.sleep()函数停息当前线程并再次执行当前线程必要一定的时间(约莫在ms级)。
time.perf_counter()函数的返回值为体系已经运行的时间(float类型,单位:s),该时间具有非常高的分辨率和精度,因此可以丈量较短的持续时间,丈量范围包罗time.sleep()的休眠时间。
time.perf_counter_ns()函数则是将返回值改为了int类型,单位变为了ns。
不使用time.sleep()函数的运行情况
点击查看代码
  1. import time
  2. a = time.perf_counter_ns()
  3. # time.sleep(0.001)
  4. b = time.perf_counter_ns()
  5. print("a = %.4f" % (a/1000000), " ms\n", "b = %.4f" % (b/1000000), " ms", sep='')
  6. print("b-a = %.4f" % ((b-a)/1000000), "ms")
  7. 运行结果为:
  8. a = 960481122.4417 ms
  9. b = 960481122.4420 ms
  10. b-a = 0.0003 ms
复制代码
不使用time.sleep()函数时,多次尝试后,执行time.perf_counter_ns()函数所耗费的时间均10ms,多次尝试的结果均在10ms左右,这表明time.sleep()函数不能准确实现ms级的短时间延时。解决方法:不采用time.sleep()函数,直接通过多次循环实现延时
点击查看代码
  1. import time
  2. a = time.perf_counter_ns()
  3. sleep(0.001)
  4. b = time.perf_counter_ns()
  5. print("a = %.4f" % (a/1000000), " ms\n", "b = %.4f" % (b/1000000), " ms", sep='')
  6. print("b-a = %.4f" % ((b-a)/1000000), "ms")
  7. 运行结果为:
  8. a = 960910032.3047 ms
  9. b = 960910046.0363 ms
  10. b-a = 13.7316 ms
复制代码
目标延时为100.01ms,实际延时为100.0161ms,相差
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表