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()的对比及示例

    本文主要介绍了python中pd.cut()与pd.qcut()的对比及示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • OpenCV全景图像拼接的实现示例

    OpenCV全景图像拼接的实现示例

    opencv其实自己就有实现图像拼接的算法,当然效果也是相当好的,本文主要介绍了OpenCV全景图像拼接,感兴趣的可以一起来了解一下
    2021-06-06
  • Python OLS 双向逐步回归方式

    Python OLS 双向逐步回归方式

    这篇文章主要介绍了Python OLS 双向逐步回归方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Python hug库构建快速可扩展的Web API框架使用详解

    Python hug库构建快速可扩展的Web API框架使用详解

    这篇文章主要介绍了Python hug库构建快速可扩展的Web API框架使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Python全栈之模板渲染详解

    Python全栈之模板渲染详解

    这篇文章主要为大家详细介绍了Python全栈之模板渲染,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 如何使用matplotlib让你的数据更加生动

    如何使用matplotlib让你的数据更加生动

    数据可视化用于以更直接的表示方式显示数据,并且更易于理解,下面这篇文章主要给大家介绍了关于如何使用matplotlib让你的数据更加生动的相关资料,需要的朋友可以参考下
    2021-11-11
  • 懒人必备Python代码之自动发送邮件

    懒人必备Python代码之自动发送邮件

    在传统的工作中,发送会议纪要是一个比较繁琐的任务,需要手动输入邮件内容、收件人、抄送人等信息,每次发送都需要重复操作,不仅费时费力,而且容易出现疏漏和错误。本文就来用Python代码实现这一功能吧
    2023-05-05
  • python安装与使用redis的方法

    python安装与使用redis的方法

    这篇文章主要介绍了python安装与使用redis的方法,分析了安装与配置的具体步骤,并结合实例详细分析了redis数据库的具体使用技巧,需要的朋友可以参考下
    2016-04-04
  • python 两种方法删除空文件夹

    python 两种方法删除空文件夹

    这篇文章主要介绍了python 两种方法删除空文件夹,帮助大家更好的利用python处理文件,感兴趣的朋友可以了解下
    2020-09-09
  • Python子进程subpocess原理及用法解析

    Python子进程subpocess原理及用法解析

    这篇文章主要介绍了Python子进程subpocess原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论