Python中time.sleep(0.001)是否真的只等待1毫秒
更新时间:2024年06月24日 08:58:51 作者:babybin
这篇文章主要介绍了Python中time.sleep(0.001)是否真的只等待1毫秒,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
time.sleep(0.001)真的只等待1毫秒?
在windows上,进行简单的编程验证上述问题。
import time
while True:
st = time.time()
time.sleep(0.001)
et = time.time()
print('dt={dt}'.format(dt=et - st))返回结果
dt=0.001966238021850586
dt=0.001010894775390625
dt=0.0020058155059814453
dt=0.0010018348693847656
dt=0.001966238021850586
dt=0.0020215511322021484
dt=0.0019714832305908203
dt=0.0010178089141845703
dt=0.0019807815551757812
dt=0.0010159015655517578
dt=0.001965761184692383
…
- 大部分时长都在2ms左右。
- 而且即便将
0.001改至更小,仍是2ms,这与操作系统有关,具体机制未做深入研究。 - 如果需要精确定时需要注意这个问题。
下面的代码用在接收线程中
- 当连续1秒钟没有数据是会抛出警告
- 由于需要响应外部stop或者pause操作
- 所以sleep的时间片段都不能太长
no_frame_time = 0
while True:
if self._stop:
logger.info(f"xxxx stop.")
break
if self._pause:
time.sleep(0.01)
continue
if len(self.msg_deque) == 0:
st = time.time()
time.sleep(0.001)
# no_frame_time += 0.001 # 这写法由于sleep不准确,导致最早no_frame_time与实际值误差特别大
et = time.time() - st
no_frame_time += et # 此处是累积时间
if no_frame_time > 1:
logging.warning("xxxx not arrived in last second.")
self.fps_signal.emit(0)
no_frame_time = 0
continue
else:
no_frame_time = 0
# ... 省略任务主体
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python中pd.cut()与pd.qcut()的对比及示例
本文主要介绍了python中pd.cut()与pd.qcut()的对比及示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06
Python hug库构建快速可扩展的Web API框架使用详解
这篇文章主要介绍了Python hug库构建快速可扩展的Web API框架使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2024-02-02


最新评论