Python模块操作:time—Clock Time(一)

简介: Python模块操作:time—Clock Time(一)

Python模块操作:time—Clock Time
目的:操作时钟的函数
时间模块提供几种不同类型时钟的访问途径,每种都用于不同的目的。标准系统调用像time()报告系统"挂钟"时间。monotonic()时钟函数被用来测量在长期进程中经过的时间,因为它确保时间永不往回走,即使系统时间被改变。对于性能测试,perf_counter()函数提供获取具有最高解析度的时钟访问,使短时间测量更精确。CPU时间通过clock()函数可以获取,并且process_time()函数返回处理器时间和系统时间的组合。

注意
这些实现公开了操作时间和日期的C库函数。由于它们绑定到底层C实现,因此一些细节(例如时间纪元的开始和支持的最大日期值)是限于特定的平台。可以参照库文档了解全部的细节。

比较的时钟
实现的细节根据平台而变化。使用get_clock_info()访问有关当前实现的基本信息,包括时钟的分辨率。

import textwrap
import time

available_clocks = [
    ('monotonic', time.monotonic),
    ('perf_counter', time.perf_counter),
    ('process_time', time.process_time),
    ('time', time.time),
]

for clock_name, func in available_clocks:
    print(textwrap.dedent('''\
    {
   name}:
        adjustable : {
   info.adjustable}
        implementation: {
   info.implementation}
        monotonic: {
   info.monotonic}
        resolution: {
   info.resolution}
        current: {
   current}
        ''').format(
        name=clock_name,
        info=time.get_clock_info(clock_name),
        current=func()
    ))
AI 代码解读

以下是macOS系统的输出,展示了monotonic和perf_counter时钟的执行是使用相同的系统调用。

monotonic:
    adjustable : False
    implementation: mach_absolute_time()
    monotonic: True
    resolution: 1e-09
    current: 0.94656131

perf_counter:
    adjustable : False
    implementation: mach_absolute_time()
    monotonic: True
    resolution: 1e-09
    current: 0.946618741

process_time:
    adjustable : False
    implementation: clock_gettime(CLOCK_PROCESS_CPUTIME_ID)
    monotonic: True
    resolution: 1.0000000000000002e-06
    current: 0.824873

time:
    adjustable : True
    implementation: clock_gettime(CLOCK_REALTIME)
    monotonic: False
    resolution: 1.0000000000000002e-06
    current: 1671860901.9184608


Process finished with exit code 0
AI 代码解读

win10系统的输出结果如下图:

image.png

挂钟时间
时间模块的一个核心函数就是time(),这个函数返回纪元开始浮点类型的秒数值。

import time
print('the time is: ',  time.time())
AI 代码解读

纪元是时间测量的起始,对于Unix系统是0:00, 1970年1月1日。尽管值总是浮点型的,实际的精度还有赖于平台。

macOS系统的输出结果如下:

/usr/local/bin/python3.9 /Users/bruce_liu/wall_clock_time.py
the time is:  1671863148.7370439
AI 代码解读

win10系统的输出结果如下图:

image.png

当日期用于存储和比较的时候,浮点表示是有用的,但是在生成人类可读的表示来说,用处不大。

对于记录或者打印时间ctime()可能更有用。

import time
print('The time is    :', time.ctime())
later = time.time() + 15
print('15 secs from now: ', time.ctime(later))
AI 代码解读

第2个print()函数在这个例子里的调用表明如何使用ctime()格式化一个时间值而不是当前时间。

macOS系统运行结果如下:

The time is    : Sat Dec 24 14:52:24 2022
15 secs from now:  Sat Dec 24 14:52:39 2022

Process finished with exit code 0
AI 代码解读

单调的时钟
因为time()函数查看系统时间,并且系统时钟可以由用户或者系统服务修改,以便在多台计算机上同步时钟,重复地调用time()函数可能产生向前和向后的值。当试图测量时间段或者用那些时间计算的时候,这可能导致不期望的行为。为了避免那些情形,要通过使用monotonic()函数,这个函数返回值总是向前的。

import time

start = time.monotonic()
time.sleep(0.1)
end = time.monotonic()
print('start :  {:>9.2f}'.format(start))
print('end   :  {:>9.2f}'.format(end))
print('span  :  {:>9.2f}'.format(end - start))
AI 代码解读

macOS系统运行结果如下:

start :       0.45
end   :       0.56
span  :       0.10
AI 代码解读

win10系统运行结果如下图:

image.png

接下文 Python模块操作:time—Clock Time(二)https://developer.aliyun.com/article/1618982

目录
打赏
0
0
0
0
220
分享
相关文章
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
39 8
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
28 4
|
4月前
|
Python Internet 模块
Python Internet 模块。
146 74
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
160 63
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
3月前
|
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
45 3
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
185 62
|
5月前
|
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
149 61

热门文章

最新文章