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写赏月工具

    中秋阴天看不见月亮只好用python写赏月工具

    女神约我去赏月!我一看中秋节可能会下雨,立马用Python写了款赏月工具!本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下
    2021-09-09
  • python执行子进程实现进程间通信的方法

    python执行子进程实现进程间通信的方法

    这篇文章主要介绍了python执行子进程实现进程间通信的方法,涉及Python使用subprocess模块操作进程的相关技巧,需要的朋友可以参考下
    2015-06-06
  • Python数据结构之树的全面解读

    Python数据结构之树的全面解读

    数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构中常见的树逻辑结构和存储结构进行了汇总,不求严格精准,但求简单易懂
    2021-11-11
  • 在Python中使用代理IP的方法详解

    在Python中使用代理IP的方法详解

    在网络爬虫开发中,使用代理IP是非常常见的技巧,Python作为一门强大的编程语言,也提供了很多方法来使用代理IP,下面,我将就如何在Python中使用代理IP进行详细的阐述,并举例说明,需要的朋友可以参考下
    2023-07-07
  • Python使用tarfile模块实现免费压缩解压

    Python使用tarfile模块实现免费压缩解压

    Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2,这篇文章主要介绍了Python使用tarfile模块实现免费压缩解压,需要的朋友可以参考下
    2024-03-03
  • wxPython电子表格功能wx.grid实例教程

    wxPython电子表格功能wx.grid实例教程

    这篇文章主要介绍了wxPython电子表格功能wx.grid实例教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Python3创建Django项目的几种方法(3种)

    Python3创建Django项目的几种方法(3种)

    这篇文章主要介绍了Python3创建Django项目的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 10种检测Python程序运行时间、CPU和内存占用的方法

    10种检测Python程序运行时间、CPU和内存占用的方法

    这篇文章主要介绍了10种检测Python程序运行时间、CPU和内存占用的方法,包括利用Python装饰器或是外部的Unix Shell命令等,需要的朋友可以参考下
    2015-04-04
  • python中使用xlrd读excel使用xlwt写excel的实例代码

    python中使用xlrd读excel使用xlwt写excel的实例代码

    这篇文章主要介绍了python中使用xlrd读excel使用xlwt写excel的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • python解析HTML并提取span标签中的文本

    python解析HTML并提取span标签中的文本

    在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或其他元素,在Python中,我们可以通过使用BeautifulSoup或lxml等库来解析HTML并提取span标签中的文本
    2024-12-12

最新评论